我想知道浏览器中的JavaScript警报功能是否
是否需要文档作为此参数。那么什么是
通过应用正确调用?
/* Variant 1 */
alert.apply(null, ["Hello World!"])
/* Variant 2 */
alert.apply(window, ["Hello World!"])
对上述问题的回答也可能会讨论绑定(bind)并打电话,但如果有人可以,我已经很高兴了
启发应用案例。
25.06.2021 编辑:
似乎警报不是“正常的”,我进入了一些 fiddle :
/* Variant 3 */
alert.apply(document, ["Hello World!"]);
-->
Error: 'alert' called on an object that does not implement interface Window.
最佳答案
您可以使用以下任何一种:
alert.apply(window, ["Hello word"]);
alert.apply(null, ["Hello world"]);
alert.apply(undefined, ["Hello world"]);
您可以使用其中任何一个的原因是 alert
(有效地)以松散模式定义,¹这意味着它不能有 null
或 undefined
如this
;所以如果你称它为传递 null
或 undefined
如this
, 默认 this
(window
在浏览器上,粗略)被使用。您不能使用
document
因为per specification alert
使用 this
(查看它是否可以显示窗口的对话框)。所以它需要this
成为窗口,而不是文件。¹ 松散模式(不关心并行构造的人也称为草率模式😉)与严格模式相反。除非您使用模块,否则代码处于松散模式,
class
, 或 "use strict";
.
关于javascript - 如何在 JavaScript 中正确使用 alert 和 apply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68130976/