考虑以下代码:
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/