Alternate names
Ext.util.FunctionsFiles
处理回调函数的常用静态方法的集合。
根据指定函数 fn
创建一个代理函数,更改 this
作用域为传入的作用域,
可以选择重写调用的参数。(默认为该函数的参数列表)
需要被代理的原始函数。
(可选) 该函数执行的作用域(this
引用)。
如果省略,默认指向默认的全局环境对象(通常是window)。
(可选) 覆盖原函数的参数列表(默认为该函数的参数列表)。
(可选) 如果该参数为true,将参数加载到该函数的后面, 如果该参数为数字类型,则将参数将插入到所指定的位置。
新产生的函数
创建一个委派对象(就是回调),调用时,在一个特定的延迟后执行。
当返回的函数调用时,该函数将在一个延迟后被调用。 可选地,可以指定一个更换(或更多)的参数列表。
每当调用时推迟执行的毫秒数。
(可选) 函数在执行时所使用的作用域(this
引用)。
(可选) 覆盖原函数的参数列表(默认为该函数的参数列表)。
(可选) 如果该参数为true,将参数加载到该函数的后面, 如果该参数为数字类型,则将参数将插入到所指定的位置。
一个函数,调用时,在指定的延迟之后执行原函数。
创建一个拦截函数。传递的函数在原函数之前被调用。如果拦截函数返回false, 则原函数不会被调用。在返回函数中,将返回原函数的返回值。 拦截函数被调用时会被传入原函数的参数。例如:
var sayHi = function(name){
alert('Hi, ' + name);
}
sayHi('Fred'); // 提示 "Hi, Fred"
// 不修改原函数的前提下
// 创建新的验证函数:
var sayHiToFriend = Ext.Function.createInterceptor(sayHi, function(name){
return name == 'Brian';
});
sayHiToFriend('Fred'); // 没提示
sayHiToFriend('Brian'); // 提示 "Hi, Brian"
原始函数
新的拦截函数
(可选) 传递的函数执行的作用域(this
引用)。
如果省略,默认指向被调用的原函数作用域或window。
(可选)返回的值,如果传递的函数返回false(默认为 null)。
新产生的函数。
创建一个组合函数,调用次序为:原函数 + 参数中的函数。 该函数返回了原函数执行的结果(也就是返回了原函数的返回值)。 在参数中传递的函数,它的参数也是原函数的参数。 用法示例:
var sayHi = function(name){
alert('Hi, ' + name);
}
sayHi('Fred'); // 提示 "Hi, Fred"
var sayGoodbye = Ext.Function.createSequence(sayHi, function(name){
alert('Bye, ' + name);
});
sayGoodbye('Fred'); // 显示两个提示
原始函数。
新的组合函数
(可选) 传递的函数执行的作用域(this
引用)。
如果省略,默认指向默认的全局环境对象(通常是window)。
新产生的函数
延迟调用该函数。你可以加入一个作用域的参数,例如:
var sayHi = function(name){
alert('Hi, ' + name);
}
// 即刻执行的:
sayHi('Fred');
// 两秒过后执行的:
Ext.Function.defer(sayHi, 2000, this, ['Fred']);
// 有时候加上一个匿名
// 函数也是很方便的:
Ext.Function.defer(function(){
alert('Anonymous');
}, 100);
Ext.defer是Ext.Function.defer的别名
要延迟执行的函数。
延迟时间,以毫秒为单位 (如果小于或等于 0 函数则立即执行)
(可选) 该函数执行的作用域(this
引用)。
如果省略,默认指向window。
(可选) 覆盖原函数的参数列表 (默认为该函数的参数列表)
(可选) 如果该参数为true,将参数加载到该函数的后面, 如果该参数为数字类型,则将参数将插入到所指定的位置。
可被clearTimeout所使用的timeout id
整个框架的一个很常用的方法。
它作为另一种方法的包装,最初接受2个参数 name
和 value
。
被包装的函数可以"灵活"的对值进行设置为其他值:
name
和 value
作为2个参数示例:
var setValue = Ext.Function.flexSetter(function(name, value) {
this[name] = value;
});
// 之后
// 设置单个名称-值
setValue('name1', 'value1');
// 设置多个名称-值对
setValue({
name1: 'value1',
name2: 'value2',
name3: 'value3'
});
flexSetter
将行为添加到现有的方法是在该函数的原始行为之后执行。 例如:
var soup = {
contents: [],
add: function(ingredient) {
this.contents.push(ingredient);
}
};
Ext.Function.interceptAfter(soup, "add", function(ingredient){
// 总是添加少量额外的盐
this.contents.push("salt");
});
soup.add("water");
soup.add("onions");
soup.contents; // 将包含:水、盐、葱、盐
目标对象
要重写的方法名称
新的行为函数。 它将与原始方法相同的参数调用。 此函数的返回值将成为新方法的返回值。
要执行拦截器函数的作用域。默认为当前对象。
刚创建的新函数。
将行为添加到现有的方法是在该函数的原始行为之前执行。 例如:
var soup = {
contents: [],
add: function(ingredient) {
this.contents.push(ingredient);
}
};
Ext.Function.interceptBefore(soup, "add", function(ingredient){
if (!this.contents.length && ingredient !== "water") {
// 总是首先添加水
this.contents.push("water");
}
});
soup.add("onions");
soup.add("salt");
soup.contents; // 将包含:水、葱、盐
目标对象
要重写的方法名称
新的行为函数。 它将与原始方法相同的参数调用。 此函数的返回值将成为新方法的返回值。
要执行拦截器函数的作用域。默认为当前对象。
刚创建的新函数。
从提供'fn'创建一个新的函数,其中的参数预先设置到 'args'。 新的参数传递到新创建的回调函数中,调用时追加到预先设定的参数之后。 创建的回调时,这是特别有用的。
示例:
var originalFunction = function(){
alert(Ext.Array.from(arguments).join(' '));
};
var callback = Ext.Function.pass(originalFunction, ['Hello', 'World']);
callback(); // 执行结果为 'Hello World'
callback('by Me'); // 执行结果为 'Hello World by Me'
新的回调函数