【发布时间】:2014-11-11 16:51:40
【问题描述】:
这将是一个棘手的问题。 有一个构造函数:
var Constructor = new function(){
this.a = 'a';
this.b = 'b';
}
我们可以创建一个对象:
var obj = new Constructor();
Constructor 中的 this 指的是窗口,但是当调用 new Constructor() 时,正在做一些魔术:现在 this 正在找出它所在的函数的范围(它到底是如何工作的?)并且仅将该范围分配给 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 中创建新对象的机制是如何在低级别工作的?调用 new 时到底在做什么?
【问题讨论】:
-
new function()的意义何在? -
@MatíasFidemraizer:It's a mistake
-
“现在
this正在找出它所在函数的作用域” 你似乎混淆了作用域和this。它们实际上彼此没有任何关系(除了在每个环境(范围)中都有绑定this)。
标签: javascript prototype proto