【问题标题】:javascript Function.prototype issuejavascript Function.prototype 问题
【发布时间】:2018-10-01 21:14:37
【问题描述】:

我开始学习 JavaScript 并且有以下问题:

var f = function foo() {}
Console.log(f.__proto__ === Function.prototype) //true 
Console.log(f.__proto__ instance of Function) //false

为什么使用 instanceof 的第三条语句返回 false。我的理解是实例的 RHS 参考传递类的原型,然后在对象或其原​​型中匹配它。请让我知道我在这里缺少什么? 引用this 来实现instance-of。

【问题讨论】:

标签: javascript function prototype instanceof


【解决方案1】:

引用this 来实现instance-of

嗯,这只是一个错误的实现。 instanceof 运算符不匹配对象本身,仅匹配其原型,与构造函数的 .prototype 匹配。你的

x instanceof Function

等价于

Function.prototype.isPrototypeOf(x)

对于f.__proto__(即Function.prototype)不成立——它不是它本身的原型。

【讨论】:

  • 谢谢,我不知道 isprototypeof。会读到的。在这种情况下 f.__proto__ ->Function.prototype; instanceof 找到 RHS 的原型属性,即 Function.prototype,然后尝试找到匹配项。这不正确吗?如果没有,有没有办法找到instanceof的实现代码。
  • 是的,它试图在Function(右轴)的.prototype 的原型链中找到Function.prototype(左轴)。但它不在链条中,它是链条的起点。
  • 你可以阅读isPrototypeOfhere
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
相关资源
最近更新 更多