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

nit*_*rma 1 javascript

看看这段代码:

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

foo = new Foo(); //true 
console.log(foo instanceof Foo) //false
Run Code Online (Sandbox Code Playgroud)
  1. 为什么foo不是一个实例Foo
  2. 为什么是this一个实例Foo

Roc*_*mat 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
Run Code Online (Sandbox Code Playgroud)