是否有可能在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`