Как добавить статические члены в EcmaScript 5

Я хочу добавить статическую функцию в класс в 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?

7
задан Max Kueng 27 July 2012 в 13:22
поделиться