我正在玩 JavaScript 中的作用域,我对从数组调用函数时遇到的一些事情感到好奇。在下面的示例中,我使用三个不同的范围。一个绑定到名为 foobar 的对象,一个绑定到窗口,然后第三个绑定到函数本身。我只是好奇为什么该函数的范围仅限于自身而不是全局窗口对象。是不是因为数组访问本身就是一个函数调用,所以存储的函数在本地范围内?
var foobar = {
doWork: function() {
console.log('doing some work...');
console.log(this);
}
}
foobar.doWork(); // `this` will refer to foobar
var doWorkClone = foobar.doWork;
doWorkClone(); // `this` will refer to window
var workClones = [];
workClones.push(foobar.doWork);
workClones[0](); // `this` will refer to the doWork function itself