今天有兴趣查看了Ext的源码,就来浅析下Ext为Function扩展的五个方法吧!
首先来分析下
createInterceptor,api是这么说的“创建一个拦截器函数,当该拦截器函数返回true时则执行原函数,否则不执行。”,首先看下它到源码:
createInterceptor : function(fcn, scope){
var method = this;
return !Ext.isFunction(fcn) ?
this :
function() {
var me = this,
args = arguments;
fcn.target = me;
fcn.method = method;
return (fcn.apply(scope || me || window, args) !== false) ?
method.apply(me || window, args) :
null;
};
}
从源码可以看出该函数有两个参数,第一过参数就是拦截器的函数,第二个参数则是作用域。我们看下这段代码:
fcn.apply(scope || me || window, args)
其中fcn就是该拦截器函数需要返回true或false,所以当返回true时则执行函数本身,否则就返回null了。
createCallback,当执行到回调函数需要传入参数时,你就必需调用该方法,该方法的当前域是window对象,如果你需要传入当前域就应当使用createDelegate方法。我们看下下面这段代码就可以很容易理解了:
var sayHi = function(name){
alert('Hi, ' + name);
}
// clicking the button alerts "Hi, Fred"
new Ext.Button({
text: 'Say Hi',
renderTo: Ext.getBody(),
handler: sayHi.createCallback('Fred')
});
如果sayHi这过函数不需要传入参数,那么handler就可以直接使用sayHi函数了。
createDelegate,简单到说就是改变原函数到当前域,由第一过参数来指定,第二个参数是数组类型的,是原函数的参数,此外还有第三个参数,因为没什么用到,这里就不多说了。
defer,从源码可以知道,他对原函数提供了延迟处理。
createSequence,创建一过函数系列,第一个参数传入函数,第二个参数为传入到当前域,该参数只当做第一个参数的当前域。通过创建函数系列可以在执行原函数之前执行一些其他操作。
分享到:
相关推荐
浅析锅炉压力容器和管道焊接方法
2021年浅析数字化工厂五大核心系统.pdf
浅析提高企业统计数据质量的方法.pdf
浅析餐厨垃圾处理厂恶臭治理方法.doc
浅析能源行业CI原理与方法.pptx
浅析汽车行业CI原理与方法.pptx
浅析计算机教学培养学生创新思维方法.docx
浅析基于计算机网络技术的侦查方法.pdf
浅析高中思想政治课的导入方法.doc
浅析小学数学解决问题的教学方法.doc
浅析阅读教学中思维训练的方法.doc
CIS2019-域权限维持方法浅析-终稿-20191125终.pdf
术语浅析及扩展GPS篇——双刃的剑.pdf
对常用的网络攻击的方法进行简单的分析,希望对大家有帮助,同时我也需要积分啊。。。
浅析JAVA编程中异常处理的方法与技巧.pdf
浅析收益性房地产估价的方法(8.15)-论文.zip
毕业设计论文浅析计算机网络安全漏洞与防范方法.doc
JavaScript中的`Function`构造函数是一种特殊的方法,用于在运行时动态创建和编译函数。它提供了不同于常规函数声明和函数表达式的灵活性,但同时也引入了一些潜在的性能问题和作用域特性。 首先,让我们看一个简单...