我开始学习JavaScript并且有以下问题:
var f = function foo() {}
Console.log(f.__proto__ === Function.prototype) //true
Console.log(f.__proto__ instance of Function) //false
为什么使用instanceof的第3个语句返回false。我的理解是实例的RHS参考传递类的原型然后在对象或它的原型中匹配它。请让我知道我在这里缺少什么? 引用this来实现实例。
答案 0 :(得分:0)
引用this来实现
的实例
嗯,这只是一个错误的实施。 instanceof
运算符与构造函数的.prototype
不匹配对象本身,只与原型相匹配。您的
x instanceof Function
相当于
Function.prototype.isPrototypeOf(x)
f.__proto__
(即Function.prototype
)不成立 - 它本身不是原型。