新做的是什么?

时间:2014-09-17 15:06:06

标签: javascript prototype proto

这将是一个棘手的问题。 有一个构造函数:

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中创建新对象的机制是如何在低级别工作的?在致电时,究竟在做什么?

1 个答案:

答案 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"