gpt4 book ai didi

javascript - 为什么 DOMWindow 类型为 null 和 undefined?

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

当您在浏览器或 Node.js 中运行以下代码时,您将获得注释中列出的预期结果:

Object.prototype.toString.call(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"

但是,当您在 PhantomJS 中运行该代码时,两种情况下的输出都是 [object DOMWindow]

这看起来很奇怪,因为 undefinednull 都是原生类型。 typeof 运算符似乎可以像在其他环境中一样工作(包括 typeof null === "object" 怪癖),因此看起来 PhantomJS 至少有未定义类型的概念:

typeof undefined; // "undefined"

它还声称 Object.prototype.toString 包含本地代码,这可能表明 Phantom 本身没有做任何修改实现的事情(我不知道是否是这种情况虽然 - 我没能在源代码中找到任何有用的东西):

Object.prototype.toString.toString(); // "function toString() { [native code] }"

那么为什么 PhantomJS 不使用(或至少公开)正确的 [[Class]] 属性值给 nullundefined,有什么办法可以改变吗?我知道我可以使用不同的方法来确定类型,但我宁愿不必这样做。

最佳答案

它是两件事的结合。脚本在网页中执行,因此全局对象是 window 对象,如下所示:

console.log(this.toString()); // [object DOMWindow]

另外,在上述情况下,该版本的 JavaScript 实现存在一个问题,它伪造了对象原型(prototype)链。

这可能会在未来的某个版本中得到修复。

关于javascript - 为什么 DOMWindow 类型为 null 和 undefined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14218670/

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