首页 新闻 会员 周边 捐助

JS代码有段看不懂,求解释

0
悬赏园豆:5 [待解决问题]

listeners 是一个Array

请问代码 listeners[i].callback.call(listeners[i].scope);是什么意思?

大熊先生|互联网后端技术的主页 大熊先生|互联网后端技术 | 初学一级 | 园豆:20
提问于:2011-07-14 22:00
< >
分享
所有回答(4)
1

相当于:listeners[i].callback();

 

 

但   listeners[i].callback 内的 this 是    listeners[i].scope

xuld | 园豆:494 (菜鸟二级) | 2011-07-14 23:14
0

首先你要理解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

fun5 | 园豆:4 (初学一级) | 2011-08-09 15:22

其实在你这里 listener.call(this)==listener();

支持(0) 反对(0) 王那个锋啊 | 园豆:311 (菜鸟二级) | 2012-01-13 13:43
0

就是让 listeners[i].scope 拥有 listeners[i].callback 的属性和方法 实现继承

王那个锋啊 | 园豆:311 (菜鸟二级) | 2012-01-13 13:41
0

是让listener[i]的callback在listener[i].scope这个作用域中执行的意思。

fn.call(thisArg[, arg1[, arg2[, ...]]])

第一个参数用来指定fn执行时的this,在你的例子中listener.callback执行时,this为listener.scope

BetaRabbit | 园豆:267 (菜鸟二级) | 2012-02-01 16:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册