gpt4 book ai didi

javascript - instanceof 在 Node 4 中计算为真,但在 Node 6 中不计算

转载 作者:搜寻专家 更新时间:2023-10-31 23:20:29 25 4
gpt4 key购买 nike

当我在 Node 4 中执行此语句时,最后一条语句的计算结果为 true,但在 Node 6 中它的计算结果为 false。为什么?

F = () => {};
F.prototype = {};
Object.create(F.prototype) instanceof F;

最佳答案

这很可能是 Node 6.x 中的错误。请考虑以下事项:

const Foo = () => {};
Foo.prototype = {};
const foo = Object.create(Foo.prototype);
// false in Node 6, true in Chrome
console.log(foo instanceof Foo);
// true in Node 6, true in Chrome
console.log(Foo[Symbol.hasInstance](foo));

前两个日志应该返回相同的值,因为 instanceof 运算符被定义为调用并返回 Foo@@hasInstance 方法,如果存在 (§12.9.4) .更有趣的是, Node 在以下情况下抛出 TypeError,而 false 是预期的,因为 Foo 不可调用(§7.3.19):

const Foo = {
"prototype": {},
[Symbol.hasInstance]: Function.prototype[Symbol.hasInstance]
};
const foo = Object.create(Foo.prototype);
// throws in Node 6, false in Chrome
console.log(foo instanceof Foo);
// false in Node 6, false in Chrome
console.log(Foo[Symbol.hasInstance](foo));

附言

在 Windows 系统上使用 Node v6.2.2(64 位)进行测试。

关于javascript - instanceof 在 Node 4 中计算为真,但在 Node 6 中不计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38253656/

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