Что именно делает новый?
Это будет сложный вопрос. Имея конструктор:
var Constructor = new function(){
this.a = 'a';
this.b = 'b';
}
мы можем создать объект:
var obj = new Constructor();
в конструкторе это относится к окну, но при вызове нового конструктора () происходит какое-то волшебство: теперь выясняется область действия функции, в которой она находится (как она работает?), и присваивает только ту область, которую возвращает объект obj. Так что в основном это делает что-то вроде:
var Constructor = new function(){
var this = {some object having variables needed for every object (like __proto__)}
this.a = 'a';
this.b = 'b';
return this;
}
Может кто-нибудь сказать мне, как именно этот механизм создания нового объекта в JS работает на низком уровне? Что именно делается под при вызове нового?
1 ответ
"new SomeFunction()" создает новый объект и вызывает SomeFunction с этим объектом как "this".
Учти это:
function SomeFunction() {
this.hello = "Hello, world";
}
var myObj = new SomeFunction();
myObj.hello; // "Hello, world"
var myObj2 = {};
SomeFunction.call(myObj2);
myObj2.hello; // "Hello, world"