Что новое ключевое слово делает под капотом?
Мне любопытно, что еще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: ...
}
}();