必威体育下载基督教Heilmann

您目前正在浏览parameters类别的存档。必威体育简介

“参数”类别的存档

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

周三,11月7日,2007

我最近在函数和方法中不断看到的不同之处在于,人们似乎不再严格地期望某种形式的参数。如果你回顾几年,你可能会记得以下函数:


函数doLayerFloat(id、开始、结束、方向、速度、褪色,whatelse,Iforgot){

}

这一点,至少对我来说是相当恼人的,因为我不善于记住需要发送参数的顺序PHP混乱可能)。我经常看到的另一个问题是如果你不想提供一些参数但最后一个参数你必须发送空字符串,甚至空值:


doLayerFloat(“myDIV”,0,30日空,空,真的,null,null){

}

/ /或
doLayerFloat(“myDIV”,0,30日”、“,”、“,”){

}

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


函数doLayerFloat(id){
var args =参数;
for(var i = 1;我< args.length;我+ +){

}

}

然而,现在我最喜欢的是函数,它实际上需要一些定义的参数(或者一个)允许它是几个东西,并允许你发送一个对象作为属性:


函数doLayerFloat(id、道具){
var elm = id的类型!== ' string'?id:. getelementbyid(id);
for (var i in props){

}

}

这允许id为元素引用或字符串,并将对象作为第二个参数,在这个参数中,我可以以任何我喜欢的方式定义顺序和数量(提供方法,然后测试它们和它们的正确值):


doLayerFloat(“x”,{开始:20日结束:30,褪色:真正});
/ /或
doLayerFloat(myElm {褪色:真的,方向:“对”});

这还允许您在属性未设置时定义默认值,你能做的事PHP但不是JavaScript。在PHP,如此:


函数foo(酒吧= 2,巴兹美元=“foo”){
}

在JavaScript中,这是做不到的,但如果你使用一个对象,你可以预先定义如果属性没有设置:


函数doLayerFloat(id、道具){
var elm = id的类型!== ' string'?id:. getelementbyid(id);
道具=道具|| {};
props.start=props.start 100;
props.fade=props.fade假;
}

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