【发布时间】:2012-07-27 11:40:41
【问题描述】:
我想在 EcmaScript 5 JavaScript 中的类中添加一个静态函数。我的类定义如下:
var Account = {};
Object.defineProperty(Account, 'id', {
value : null
});
我会像这样创建一个新实例:
var theAccount = Object.create(Account);
theAccount.id = 123456;
现在我想向Account 类添加一个静态函数。如果我使用构造函数和prototype 属性创建了Account 类,如下所示:
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 样式对象创建时如何向类添加静态成员?
【问题讨论】:
-
问得好、有趣的问题。