在javascript中混淆instanceof运算符的行为

时间:2012-08-09 14:11:59

标签: javascript

看看这段代码:

function Foo () {
    console.log(this instanceof Foo);
    return { name: "nitesh" }; 
}

foo = new Foo(); //true 
console.log(foo instanceof Foo) //false
  1. 为什么foo不是Foo的实例?
  2. 为什么thisFoo的实例?

1 个答案:

答案 0 :(得分:11)

Foo函数中,您将返回一个对象。这是foo设置的内容。那不是Foo对象,它只是一个“普通”对象。

以这种方式尝试:

function Foo(){
    console.log(this instanceof Foo);
    this.name = "nitesh";
}

var foo = new Foo(); //true 
console.log(foo instanceof Foo) //true