gpt4 book ai didi

javascript - 为什么我们需要 isPrototypeOf 呢?

转载 作者:可可西里 更新时间:2023-11-01 01:30:37 25 4
gpt4 key购买 nike

this page状态:

Note: isPrototypeOf differs from instanceof operator. In the expression object instanceof AFunction, the object prototype chain is checked against AFunction.prototype, not against AFunction itself

好吧,我真的不明白他们想告诉我们什么。是不是 object instanceof AFunction 和 `AFunction.prototype.isPrototypeOf(object) 完全一样?还是我错了?

为什么我们需要 isPrototypeOf

如果我需要做 p.isPrototypeOf(o) 难道我不能只做 o instanceof p.constructor 吗?

此外,p.isPrototypeOf(o) 在功能上等同于 p===Object.getPrototypeOf(o) 吗?

最佳答案

对象构造函数是时髦的东西。来自 this answer :

As Pointy has pointed out, in his answer

The "constructor" property is a reference to the function that created the object's prototype, not the object itself.

通常的处理方法是 扩充对象的原型(prototype) 分配后的 constructor 属性 到原型(prototype)

对象的构造函数不是只读的,这就是为什么这样做是可能的。在创建 p 之后,我可以为 p.constructor 分配任何值,这将完全破坏 using

o instanceof p.constructor

代替

p.isPrototypeOf(o)

进一步阅读


编辑回复:OP编辑

Addtionally, is p.isPrototypeOf(o) functionally equivalent to p===Object.getPrototypeOf(o)?

除了 Object.getPrototypeOf 直到 JavaScript 1.8.1 才被引入之外,这些与您原来的问题更相似?参见 John Resig - Object.getPrototypeOf .也许更相关的是,这两个函数在 the spec 中是不同的。 ! (警告,PDF 链接)

15.2.3.2 Object.getPrototypeOf

15.2.4.6 Object.prototype.isPrototypeOf

关于javascript - 为什么我们需要 isPrototypeOf 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com