Мне любопытно, что еще делает ключевое слово new
в фоновом режиме, кроме изменения того, что относится и к области действия this
.
Например, если мы сравниваем использование ключевого слова new
для созданияФункция устанавливает свойства и методы объекта, чтобы просто заставить функцию возвращать новый объект. Есть ли что-то еще, что делает новый объект?
И что предпочтительнее, если я не хочу создавать несколько объектов изконструктор функции
var foo2 = function () {
var temp = "test";
return {
getLol: function () {
return temp;
},
setLol: function(value) {
temp = value;
}
};
}();
var foo = new function () {
var temp = "test";
this.getLol = function () {
return temp;
}
this.setLol = function(value) {
temp = value;
}
}();
Профилировщик Firebug говорит мне, что использование нового ключевого слова немного быстрее (2 мс вместо 3 мс), на больших объектах новое еще значительно быстрее?
[Редактировать]
Другое дело, что действительно большие конструкторы объектов имеют возврат в нижней части функции (он будет иметь большое количество локальных функций) или несколько this.bar = ... вверху функцииболее читабельным?Что считается хорошим соглашением?
var MAIN = newfunction() {
this.bar = ...
// Lots of code
}();
var MAIN2 = function() {
// Lots of code
return {
bar: ...
}
}();