说我有这样的功能
function myFunc(a, b, c)
{
if(a!=undefined) this.a = a;
if(b!=undefined) this.b = b;
if(c!=undefined) this.c = c;
}
我想只设置b的值,然后我可以做这样的事情。
myFunc(undefined, "some Value for b", undefined);
但是我想知道是否有一种方法我可以做这样的事情来设置b的值
myFunc(b:"some value for b");
这可能是错的,但你可能会明白我的意思。我想指定属性的名称以及值,以便我不必担心传递未定义的值。我该怎么做?
也随意更改标题,我不知道应该调用什么问题。
答案 0 :(得分:4)
当然,只需使用它:
function myFunc(options)
{
if(typeof(options['a']) != "undefined") this.a = options['a'];
if(typeof(options['b']) != "undefined") this.b = options['b'];
if(typeof(options['c']) != "undefined") this.c = options['c'];
}
然后用
调用它var func = new myFunc({b:"some value for b"});
console.log(func.b);//"some value for b"
答案 1 :(得分:1)
是的,传入一个对象文字
function myFunc(options)
{
if(options.a!=undefined) this.a = options.a;
if(options.b!=undefined) this.b = options.b;
if(options.c!=undefined) this.c = options.c;
}
并像这样打电话
var var1 = new myFunc({b:"some value for b"});
或更动态,可扩展的方式(如上所述)
function myFunc(obj)
{
for (var i in obj)
{
if(obj.hasOwnProperty(i))
{
this[i]=obj[i];
}
}
}
var func = new myFunc({b:"some value for b"});
console.log(func.b);//"some value for b"
答案 2 :(得分:1)
您可以通过传递Ojbect作为参数来实现此目的:
var someObject = { a: 'some A value', b: 'some B value' };
myFunc(someObject);
这是一种非常常见的做法。
例如,jQuery经常使用这个结构。
如果查看jQuery.animate()的文档,可以看到它接受Plain Object作为第一个参数。