Мой коллега использует "новую функцию()" с нижним регистром "f" для определения новых объектов в JavaScript. Кажется, он хорошо работает во всех основных браузерах, и он также кажется довольно эффективным для скрытия частных переменных. Вот пример:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
Как только используется "this", он становится общедоступным свойством someObj. Итак, someObj.foo, someObj.get_inner() и someObj.set_inner() доступны публично. Кроме того, set_inner() и get_inner() являются привилегированными методами, поэтому они имеют доступ к "внутренним" путем закрытия.
Однако я нигде не видел ссылок на эту технику. Даже Дуглас Крокфорд JSLint жалуется на это:
- странная конструкция. Удалить 'новый'
Мы используем этот метод в производстве и, похоже, хорошо работаем, но я немного беспокоюсь об этом, потому что он нигде не документирован. Кто-нибудь знает, является ли это правильной техникой?