Что именно делает новый?

Это будет сложный вопрос. Имея конструктор:

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"
Другие вопросы по тегам