Function.extend({
create : function(options)
{
var fn = this;
options = utils.merge({
'bind':fn,
'delay':false,
'arguments':null,
'periodical':false,
'attempt':false
},options); //把 {} 和 options的属性绑定到 options上。 utils.merge()的返回值是一对象。
if($chk(options.arguments) && utils.getType(options.arguments) != 'array')options.arguments = [options.arguments];//这里 $chk 不知道是干什么的, 我猜是 判断是否存在。 加起来就是:options.arguments存在并不是数组,则把options.arguments变为数组。
return function()
{
var args = options.arguments || arguments;//取options.arguments 和函数自己的参数||。
var returns = function(){return fn.apply($pick(options.bind,fn),args);}; //这里的Fn LZ 应该没有给出来(一个函数)。
if(options.delay)return setTimeout(returns,options.delay);//根据给定参数是逻辑判断。
if(options.periodical)return setInterval(returns,options.periodical);
if(options.attempt){try{return returns();}catch(err){return false;};}
return returns();//返回fn的函数执行结果。
}
}
})
create : function(options)
{
var fn = this;
options = utils.merge({
'bind':fn,
'delay':false,
'arguments':null,
'periodical':false,
'attempt':false
},options); //把 {} 和 options的属性绑定到 options上。 utils.merge()的返回值是一对象。
if($chk(options.arguments) && utils.getType(options.arguments) != 'array')options.arguments = [options.arguments];//这里 $chk 不知道是干什么的, 我猜是 判断是否存在。 加起来就是:options.arguments存在并不是数组,则把options.arguments变为数组。
return function()
{
var args = options.arguments || arguments;//取options.arguments 和函数自己的参数||。
var returns = function(){return fn.apply($pick(options.bind,fn),args);}; //这里的Fn LZ 应该没有给出来(一个函数)。
if(options.delay)return setTimeout(returns,options.delay);//根据给定参数是逻辑判断。
if(options.periodical)return setInterval(returns,options.periodical);
if(options.attempt){try{return returns();}catch(err){return false;};}
return returns();//返回fn的函数执行结果。
}
}
})
现在流行这么写函数吗?怎么现在都这样写啊?
var o4 = function(){
alert('hello world')
}.create({delay:1000})() //延迟1秒输出'hello world'
http://www.i170.com/user/voidarea/Article_91969