在JavaScript中使用instanceof运算符

时间:2018-03-09 07:52:16

标签: javascript prototype

有人可以解释为什么此代码段会将结果返回为“false”

divs

根据我的理解,instanceof检查当前对象,如果对象属于指定的对象类型,则返回true。

所以“new f()”应该作为当前对象,它是f类型的实例。 结果应该是真的。

2 个答案:

答案 0 :(得分:2)

new function()执行much more而不是调用构造函数并返回其输出

  

它会创建一个新对象。这个对象的类型就是对象。

     

它设置这个新对象的内部,不可访问,[[原型]](即    proto )属性是构造函数的外部,可访问的原型对象(每个函数对象自动具有   原型属性)。

     

它使这个变量指向新创建的对象。

     

它使用新创建的对象执行构造函数   无论何时提到这一点。

     

它返回新创建的对象,除非构造函数   返回非null对象引用。在这种情况下,该对象   返回引用

但是,如果函数的构造函数已经返回一个值,那么new function()的输出与function()

相同
function f1(){ return f1 }
f1() == new f1() //returns true

在构造函数中没有return语句

function f1(){ }
f1() == new f1() //returns false

答案 1 :(得分:1)

删除返回f。 New会给你一个对象,除非你返回别的东西,在这种情况下是函数f。