通用的调用不确定参数个数的 JavaScript 函数

作者:vkvi 来源:ITPOW(原创) 日期:2010-4-15

很多情况下,特别是在使用类时,我们常用到类似下面的代码:

if (typeof(this.onchange) == "function")
{
    this.onchange();
}

其实这段代码的意思是,如果属性 onchange 对应了一个函数,那么就执行这个函数。因为 onchange 有点像事件的用法,类使用者不一定会为其赋值,所以这里需要判断。

没什么技术含量,只是,如果有很多属性,都要这样去写,就有些麻烦。

正在开发中的 ezj 新版本提供了此问题的解决方案。

Function.is = function(v)
{
    return Object.prototype.toString.apply(v) === "[object Function]";
}
 
 
Function.run = function(v)
{
    if (Function.is(v))
    {
        var arr = new Array();
        for (var i = 1; i < arguments.length; i++)
        {
            arr.push(arguments[i]);
        }
        v.apply(window, arr);
    }
}

使用方法变成了:Function.run(this.onchange)。Function.run 的亮点就是可以运行不确定参数的 JavaScript 函数,比如:

Function.run(this.onclick, p1);
Function.run(this.onload, p1, p2);

p1 参数会自动传送到 onclick 中;

p1、p2 参数会自动传送到 onload 中。

说明

以上代码只是 ezj 新版本的草稿代码,不代表 ezj 新版本发布时的最终代码。

相关阅读

相关文章