gpt4 book ai didi

javascript - 为什么IE8的一些内置函数不是Function的实例?

转载 作者:行者123 更新时间:2023-11-29 22:28:36 25 4
gpt4 key购买 nike

我注意到 alert 和 console.log 在 IE8 中不像正常的 JavaScript 对象那样工作。有人对此有解释吗?

Good:
escape instanceof Function; // => true
escape.call; // => function call() { }
typeof escape; // => "function"
escape.test = 1; // => 1

Bad:
alert instanceof Function; // => false
alert.call; // => undefined
typeof alert; // => "object"
alert.constructor; // => undefined
alert.test = 1; // => Object doesn't support this property or method

最佳答案

在这里找到:http://perfectionkills.com/whats-wrong-with-extending-the-dom/

ECMA-262 第三。编辑:

Host objects may implement these internal methods with any implementation-dependent behaviour, or it may be that a host object implements only some internal methods and not others.

内部方法规范讨论的是 [[Get]]、[[Put]]、[[Delete]] 等。注意它是如何说内部方法行为是依赖于实现的。这意味着宿主对象在调用 [[Get]] 方法时抛出错误是绝对正常的。


因此,IE 不违反规范。行为是一致的,所有不属于 JavaScript 语言的内置函数都是这样工作的。您不能为它们分配属性,它们没有原型(prototype)和构造函数。

例子:

alert;
scrollTo;
document.getElementById;
location.reload;
setTimeout;

关于javascript - 为什么IE8的一些内置函数不是Function的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100444/

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