我想在 EcmaScript 5 JavaScript 中的类中添加一个静态函数。我的类定义如下所示:
var Account = {};
Object.defineProperty(Account, 'id', {
value : null
});
我会像这样创建一个新实例:
var theAccount = Object.create(Account);
theAccount.id = 123456;
现在我想在Account类中添加一个静态函数。如果我Account使用构造函数和这样的prototype属性创建了类:
var Account = function () {
this.id = null;
};
...我可以这样做:
Account.instances = {};
Account.createInstance = function () {
var account = new Account();
account.id = uuid.v4();
Account.instances[account.id] = account;
return account;
};
但是由于我使用Object.defineProperty而不是prototype属性来添加成员,Account.instances并且Account.createInstance在调用时也会被实例化Object.create,因此是实例的属性。
使用 EcmaScript 5 样式对象创建时如何向类添加静态成员?