2011-10-12 161 views
0
function Foo() { 
    alert(this === a);//return false! **why this is not equal a?** 
} 
var a = new Foo();//create a new object 

foo是一个构造函数,为什么这个在'Foo'中与'a'不相等。this in javascript构造函数

回答

6

当您在构造函数中时,对变量a的赋值尚未发生。事件的顺序是:

  1. 创建一个新的对象
  2. 运行构造
  3. 分配新对象变量a
+0

很好的解释jfriend00 – david

+0

@大卫好的,非常感谢。 – ray

+0

@KooiInc提醒真实?我在萤火虫中运行代码,它提醒虚假。 – ray

-1

我认为“这”指的是作为一个对象,但“this.a”是真实的,因为这是对象

+0

这里没有'this.a'。所以我真的不明白你想说什么。 – cHao

+0

好吧,它在我看来是因为射线试图检查“a”上的平等,因为“this”是对象的对象 – david