所以我想说我想在JavaScript中将包含设置的对象传递给我的类,但也提供默认选项,我该如何轻松地做到这一点?例如:
myClass = function(options){
var defaults = {
foo: 'foo',
bar: 'bar'
};
};
customOptions = {
bar: 'foobar'
};
myInstance = new myClass(customOptions);
因此,在这种情况下,我希望myInstance()
使用foo='foo'
,因为它未由用户指定,而bar='foobar'
则由用户设置。
现在,我将处理一个更大更复杂的JSON对象,显然,每次检查每个属性似乎效率低且难以维护,因此有一些方法可以轻松地组合这些对象,根据需要进行覆盖,用户提供的属性始终优先?
答案 0 :(得分:2)
你可以这样做:
var MyClass = function (options) {
var defaults = {foo: 1, bar: 2};
for (var option in defaults) {
this[option] = options[option] || defaults[option];
}
}
var customOptions = { bar: 5};
var c = new MyClass(customOptions);
基本上循环传入的自定义选项,并添加任何缺少的默认选项。在这种情况下c.foo = 1
和c.bar = 5
。小提琴可在http://jsfiddle.net/2Ve3M/获得。
答案 1 :(得分:1)
您可以尝试这样的事情:
myClass = function(options){
var myOptions = {
foo: options.foo || 'foo',
bar: options.bar || 'bar'
};
};
如果您使用的是jQuery,还可以查看http://api.jquery.com/jQuery.extend/
答案 2 :(得分:1)
您可以检查自定义选项对象是否包含您要查找的属性,如果没有设置默认值。
myClass = function(options) {
this.foo = options.foo || 'foo';
this.bar = options.bar || 'bar';
};
customOptions = {
bar: 'foobar'
};
myInstance = new myClass(customOptions);