★★★★帮忙解释下这几行话是什么意思?★★★★

seesea125 2010-09-13 12:57:37
这是继承jquery的插件,想问的问题在我注释的地方
PPP.ADD= PPP.ADD|| ((function() {

var Xyz= function() {
this.Init();
}

Xyz.prototype = {
fns: [],
Init: function() {
this.fns = [];
},
One: function(fn, self) {
this.Add((function() {
fn.apply(self, arguments);
this.Remove(fn);
}).bind(this));//这个.bind(this)是什么意思
},
Remove: M(function() {//这个M是什么?是函数名吗?为什么这个函数M()里面,有两个函数,分别是function()和function(fn)啊,这么写什么意思??
this.fns = [];
}, function(fn) {
for (var i = 0; i < this.fns.length; i++) {
if (this.fns[i][0] === fn) {
this.fns.Remove(i);
return;
}
}
}),
Call: function() { //执行委托方法
var result;
for (var i = 0; i < this.fns.length; i++) {
var ret = this.fns[i][0].apply(this.fns[i][1], arguments);
result = ret == undefined ? result : ret;
}
return result;
}
};

return Xyz;

})());//这里用个()这么写什么意思?这整个function外面整个的用一个()括起来又是什么意思?
...全文
173 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
seesea125 2010-09-13
  • 打赏
  • 举报
回复
MrSLin,谢谢回复,解释的很清楚明白
even0220 2010-09-13
  • 打赏
  • 举报
回复
不懂,帮顶。
wanghui0380 2010-09-13
  • 打赏
  • 举报
回复
两个星星!估计在net里已经能熟练使用委托了

你注释的那个地方,实际就是javascript的里“委托”,js的专用名词叫做“闭包”-意思同委托一致就是把函数当参数传递
huangmin3956 2010-09-13
  • 打赏
  • 举报
回复
不懂 帮顶
  • 打赏
  • 举报
回复
帮顶!!!!!!
MrSLin 2010-09-13
  • 打赏
  • 举报
回复
因为js中this指向是可以变的,为了让this绑定到正确对象上去。
PPP.ADD= PPP.ADD|| ((function() {/*do something here*/})());
||后面是一个匿名函数的调用,并且把返回值与PPP.ADD做或运算
分解一下的话

function(){/*do something here*/}//函数的定义,没有名字,所以叫匿名函数
(function(){/*do something here*/})()//函数的执行,返回值

最外面一层括号无非就是对函数的返回值加层括号,没什么好说的了。

Remove: M(function(){/*do something here*/}, function(fn){/*do something here*/})

变量Remove指向函数对象M(我想这个函数在其他地方有定义),M有两个参数,参数都是函数对象,而且是匿名函数。
参数如果是函数的话,在M里面可以可以调用这两个函数,就像调用普通函数那样。
BaoShiqiang 2010-09-13
  • 打赏
  • 举报
回复
这个不知道 只能帮顶 不好意思
porschev 2010-09-13
  • 打赏
  • 举报
回复
是不是没帖全?
Remove:M(这里是个参数)

里面的function是一个方法返回一个值当这个M方法的参数。。

Remove应该是定义的一样状态。。是这样状态时执行那个带参的M方法

最后面function包起来。。是把一个一系列操作封装起来。。。看前面的应该是封装的.add方法

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧