浏览 2607 次
锁定老帖子 主题:看ext类的extend方法的两点疑问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-23
// inline overrides var io = function(o){ for(var m in o){ this[m] = o[m]; } }; return function(sb, sp, overrides){ if(typeof sp == 'object'){ overrides = sp; sp = sb; sb = function(){sp.apply(this, arguments);}; } var F = function(){}, sbp, spp = sp.prototype; F.prototype = spp; sbp = sb.prototype = new F(); sbp.constructor=sb; sb.superclass=spp; if(spp.constructor == Object.prototype.constructor){ spp.constructor=sp; } sb.override = function(o){ Ext.override(sb, o); }; sbp.override = io; Ext.override(sb, overrides); return sb; }; }() --------------------------- 1 extend : function(){}(),我想问一下为什么在ext类中extend方法后面有(). 2 return function(sb, sp, overrides){}我对这种写法不太理解. 而Doc extend( Object subclass, Object superclass, [Object overrides]) 为什么这里 extend : function(){} 没有参数在return的funtion带参数这样写的作用是什么呢。 我的技术不太强,如果问的问题太弱请不要介意,有会的兄弟帮忙解答一下。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-23
1.是为了使return的function可以使用closure,比如
a=function(){var eee=123; return function(){alert(eee)}}() a() 最后的()就是执行这个函数 2.就是返回匿名函数,在scheme里面叫lambda,最后extend其实就是这个匿名函数的引用了,当然extend就有3个参数了 如果对于scope chain不太熟悉,看着确实不太好懂 |
|
返回顶楼 | |
发表时间:2007-10-23
谢谢楼上的解答,我这方面的知识还是差啊,回来补习一下.
|
|
返回顶楼 | |
发表时间:2007-10-25
msf_job 写道 谢谢楼上的解答,我这方面的知识还是差啊,回来补习一下.
这几个问题都需要对函数和闭包概念的理解,建议补充一下这方面的知识,这方面的书可以看《JavaScript权威指南》里面关于对象和函数两章,另外在网上搜一搜“js+闭包”,认真读一读可以有所帮助。 看了以后如果还有问题不妨接着问:-) |
|
返回顶楼 | |