Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中instanceof运算符的混淆行为_Javascript - Fatal编程技术网

javascript中instanceof运算符的混淆行为

javascript中instanceof运算符的混淆行为,javascript,Javascript,请看下面的代码: function Foo () { console.log(this instanceof Foo); return { name: "nitesh" }; } foo = new Foo(); //true console.log(foo instanceof Foo) //false 为什么foo不是foo的实例 为什么this是Foo的一个实例 在Foo函数中,返回一个对象。这就是foo设置的内容。那不是一个Foo对象,它只是一个“普通”对象 试着

请看下面的代码:

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

foo = new Foo(); //true 
console.log(foo instanceof Foo) //false
  • 为什么
    foo
    不是
    foo
    的实例
  • 为什么
    this
    Foo
    的一个实例

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

    试着这样做:

    function Foo(){
        console.log(this instanceof Foo);
        this.name = "nitesh";
    }
    
    var foo = new Foo(); //true 
    console.log(foo instanceof Foo) //true
    

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

    试着这样做:

    function Foo(){
        console.log(this instanceof Foo);
        this.name = "nitesh";
    }
    
    var foo = new Foo(); //true 
    console.log(foo instanceof Foo) //true
    

    你基本上是在做
    {name:“nitesh”}Foo的instanceof
    。你基本上是在做
    {name:“nitesh”}Foo的instanceof
    。谢谢你的解释,但我仍然很困惑这是一个Foo的实例吗?@niteshsharma:这就是
    new
    的工作原理。从:
    调用构造函数时使用指定的参数,并将“this”绑定到新创建的对象。
    感谢您的解释,但我仍然不明白这是Foo的一个实例吗?@niteshsharma:
    new
    就是这样工作的。在:
    中,使用指定的参数调用构造函数,并将“this”绑定到新创建的对象。