javascript - native 警报上的函数引用因调用对象无效而失败

标签 javascript alert chaining

考虑以下代码:

function test()
{
   return {
      alert : function(txt){ alert(txt);}
   }
}
test().alert("Boo");

这将完美执行并提醒 Boo

以下将失败:

function test()
{
   return {
      alert : window.alert
   }
}
test().alert("Boo");

错误无效调用对象

为什么最后一个例子在引用window.alert时失败了?

最佳答案

window.alert 期望 window 绑定(bind)到 this,当你这样调用它时,它是不满足的。 (即 test().alert 会将 this 设置为从 test() 返回的对象。)

你可以这样修复它:

return {
  alert : window.alert.bind(window)
}
例如,

console.log 的行为方式相同。

关于javascript - native 警报上的函数引用因调用对象无效而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31905582/

相关文章:

javascript - 当两个字段包含数据时如何创建警报

javascript - 警报功能在 coffeescript 中不起作用

c++ - 使用 std::move 返回一个对象并链接函数

javascript - 元素在 IE 8 中始终为空

javascript - 在这种情况下如何setInterval()和removeInterval()?

javascript - 如何使用正则表达式在字符串中查找逻辑运算符?

javascript - break 关键字在 JavaScript 中是如何工作的

javascript - 如何在我的 HTML 网页中包含我的 Javascript 文件和/或 jQuery

javascript - 我可以根据jquery中的条件分配函数吗?

附加到 stdObject 并链接的 PHP 闭包函数