var arrayfunc = [function(){return this;}];
var func = arrayfunc[0];
arrayfunc[0]();    //[function (){return this;}]
func();            //Window


我不知道为什么this不一样?你帮我吗?

最佳答案

只需考虑如下:

arrayfunc[0](); // this refer to arrayfunc
window['func'](); // this refer to window


即使通过arrayfunc[0] === func返回true,调用方也有所不同。

arrayfunc[0]();通过对象arrayfunc调用了该函数,

window['func']();通过对象window调用了该函数。

08-04 13:03