gpt4 book ai didi

javascript - JavaScript 中的函数值

转载 作者:数据小太阳 更新时间:2023-10-29 04:17:32 25 4
gpt4 key购买 nike

nextplease.init = function() {...} 是一个没有参数的函数。我期望 nextplease.initfunction() {nextplease.init();} 的行为相同。它们之间是否存在任何可能的差异(显然,您可以将某些内容分配给 nextplease.init,但让我们排除它)?特别是 window.addEventListener("load", nextplease.init, false);window.addEventListener("load", function() {nextplease .init();}, false);?

我试图找到的错误在 Objects in JavaScript defined and undefined at the same time (in a FireFox extension) 中有所描述。有人建议使用第一种形式而不是第二种形式可能会有所不同。

最佳答案

一个重要的区别是 nextplease.init 引用的函数体内的“this”关键字的值。

假设 nextplease 是这样定义的:

nextplease = {};
nextplease.someCustomProperty = "hello";
nextplease.init = function () { alert(this.someCustomProperty); }

在第一个示例中,“this”的值将是 DOM 对象,警报将失败:

window.addEventListener("load", nextplease.init, false);     

在第二种形式中,“this”的值将是 nextplease 对象,警报会说“你好”:

window.addEventListener("load", function() {nextplease.init();}, false);

引用 MDC 文档:

https://developer.mozilla.org/en/DOM/element.addEventListener

关于javascript - JavaScript 中的函数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320201/

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