这将是一个棘手的问题。 有一个构造函数:
var Constructor = new function(){
this.a = 'a';
this.b = 'b';
}
我们可以创建一个对象:
var obj = new Constructor();
这个在构造函数中引用了窗口,但在调用新的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中创建新对象的机制是如何在低级别工作的?在致电新时,究竟在做什么?
答案 0 :(得分: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"