Мой коллега использовал «новую функцию ()» в нижнем регистре «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 Дугласа Крокфорда жалуется на это:
- странная конструкция. Удалить «новый»
Мы используем эту технику в производстве, и она, кажется, работает хорошо, но я немного беспокоюсь об этом, потому что она нигде не документирована. Кто-нибудь знает, если это действительная техника?