本机警报上的函数引用因调用对象无效而失败
Function reference on native alert fails with invalid calling object
考虑以下代码:
function test()
{
return {
alert : function(txt){ alert(txt);}
}
}
test().alert("Boo");
这将完美执行并提醒 Boo
。
以下将失败:
function test()
{
return {
alert : window.alert
}
}
test().alert("Boo");
错误invalid calling object
为什么最后一个例子引用window.alert时失败了?
window.alert
期望 window 绑定到 this
,当你这样称呼它时不满足。 (即 test().alert
将 this
设置为从 test()
返回的对象。)
你可以这样修复:
return {
alert : window.alert.bind(window)
}
console.log
,例如,行为相同。
考虑以下代码:
function test()
{
return {
alert : function(txt){ alert(txt);}
}
}
test().alert("Boo");
这将完美执行并提醒 Boo
。
以下将失败:
function test()
{
return {
alert : window.alert
}
}
test().alert("Boo");
错误invalid calling object
为什么最后一个例子引用window.alert时失败了?
window.alert
期望 window 绑定到 this
,当你这样称呼它时不满足。 (即 test().alert
将 this
设置为从 test()
返回的对象。)
你可以这样修复:
return {
alert : window.alert.bind(window)
}
console.log
,例如,行为相同。