listeners 是一个Array
请问代码 listeners[i].callback.call(listeners[i].scope);是什么意思?
相当于:listeners[i].callback();
但 listeners[i].callback 内的 this 是 listeners[i].scope
首先你要理解call 的意思:call 表面意思 “呼叫”
1 function callback(){
2 listener.call(this);
3 }
4
5 function listener(){alert('hello')}
6
7 callback();//弹出 hello
我想你的代码中,listeners[i].scope 也是一个函数
listeners[i].callback 也是一个函数
意思是 当调用 listeners[i].callback 的时候 会同时执行 listeners[i].scope
其实在你这里 listener.call(this)==listener();
就是让 listeners[i].scope 拥有 listeners[i].callback 的属性和方法 实现继承
是让listener[i]的callback在listener[i].scope这个作用域中执行的意思。
fn.call(thisArg[, arg1[, arg2[, ...]]])
第一个参数用来指定fn执行时的this,在你的例子中listener.callback执行时,this为listener.scope