很多情况下,特别是在使用类时,我们常用到类似下面的代码:
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 新版本发布时的最终代码。
相关阅读