在静态方法之间共享代码



是否有可能在Javascript静态方法之间共享代码,而不使共享方法公开?

例如:

// public method
Company.getByUri = function(uri)
{
  // ...
  return gotCompany(data);
}
// public method
Company.getByName = function(name)
{
  // ...
  return gotCompany(data);
}
// Should be a private method, but I'm forced to keep it public
Company.gotCompany = function(data)
{
  // ...
  return new Company(data.name, data.creationDate);
}

你可以使用闭包:

var Company = (function() {
    function Company(a, b) { /* ... */ }
    Company.getByUri = function(uri) {  return gotCompany(data); }
    Company.getByName = function(name) {  return gotCompany(data); }
    function gotCompany(data) {
        return new Company(data.name, data.creationDate);
    }
    return Company;
})();
// Here `Company.getByUri` and `Company.getByName` are available,
// but not `gotCompany`

最新更新