必威体育下载克里斯蒂安·海尔曼

您当前正在浏览对象文本类别的存档。必威体育简介

“object literal”类别的存档

将对象作为参数发送–好还是坏?

星期三,11月7日,二千零七

我最近在函数和方法中看到的一个不同点是,人们似乎不再以某种形式期望参数的严格模式。如果回顾几年,您可能会记得如下功能:


函数dolayerfloat(id、start、end、direction、speed、fade、whatelse、iforgot){

}

这个,至少对我来说是相当烦人的,因为我记不清参数需要发送的顺序(调节输入PHP可能是困惑)。我一直看到的另一个问题是,如果您不想提供某些参数,但最后一个参数之一必须发送空字符串,甚至空值:


DolayerFloat('MyDiv',0,30,空,空,真,空,空){

}

/或
DolayerFloat(‘myDiv’,0,30,’,’,’,’,’,’,’){

}

这既令人困惑又令人费解。我看到的其他脚本通过使用arguments数组来解决这个问题,它至少允许发送灵活数量的参数。


函数DolayerFloat(ID){
var args=参数;
对于(var i=1);i<args.length;I++){

}

}

然而,现在我最喜欢的是实际使用几个已定义参数(或单个参数)的函数,允许它是多个对象,并允许您将对象作为属性发送:


DolayerFloat函数(ID,道具){
var elm=ID类型!=“字符串”?id:document.getElementByID(id);
对于(props中的var i){

}

}

这允许ID是元素引用或字符串,并将对象作为第二个参数,在该参数中,我可以定义我喜欢的顺序和数量(前提是该方法随后测试每个对象及其正确值):


dolayerfloat('x',开始:20,结束:30,淡出:真);
/或
DolayerFloat(MyElm,淡出:真,方向:'right');

这还允许您在不设置属性时定义默认值,你可以做的事PHP但不是在javascript中。在PHP,这工作:


函数foo($bar=2,$baz='foo')。{
}

在无法完成的javascript中,但是,如果使用对象,如果未设置属性,则可以预先定义:


DolayerFloat函数(ID,道具){
var elm=ID类型!=“字符串”?id:document.getElementByID(id);
props=道具
props.start=props.start 100;
props.fade=props.fade假;
}

你同意吗?还是对象的字面语法仍然太复杂?