有人可以解释为什么此代码段会将结果返回为“false”
divs
根据我的理解,instanceof检查当前对象,如果对象属于指定的对象类型,则返回true。
所以“new f()”应该作为当前对象,它是f类型的实例。 结果应该是真的。
答案 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。