猿问

数组里放函数再调用

var arr=[alert];
arr[0]('hi!');//直接调用,报错:"Uncaught TypeError: Illegal invocation"

var b=arr[0];
b('hi!');//这样就可以运行,不知何故??


qq_杀意隆_0
浏览 1492回答 1
1回答

产品经理不是经理

//改变this的指向 arr[0]('hi!');//this指向的是alert函数对象本身,而alert方法是属于window对象的,会引发TypeError。 arr[0].call(this,'hi') //或者改为arr[0].call(window,'hi')即可正确执行。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答