2012-03-21 22 views
3

因此,假設我想要將包含設置的對象傳遞給JavaScript中的類,但也提供了默認選項,我將如何輕鬆地執行此操作?例如:使用用戶提供的對象的屬性(如果存在),否則使用默認值

myClass = function(options){ 
    var defaults = { 
     foo: 'foo', 
     bar: 'bar' 
    }; 
}; 
customOptions = { 
    bar: 'foobar' 
}; 
myInstance = new myClass(customOptions); 

因此,在這種情況下,我想爲myInstance()使用foo='foo',因爲它不是由用戶指定,並bar='foobar'因爲這是由用戶設置。

現在,我將處理更大更復雜的JSON對象,顯然,它看起來效率低下且難以維護,無法每次檢查每個屬性,因此有什麼方法可以輕鬆地組合這些對象,覆蓋爲需要用戶提供的屬性始終優先?

+0

答案有明顯的選擇,但你也可以把默認設置放在'[[Prototype]]'上,並在實例上覆蓋它們。 – RobG 2012-03-21 02:23:40

回答

1

您可以檢查自定義選項對象是否包含您正在查找的屬性,以及是否未設置默認值。

myClass = function(options) { 
    this.foo = options.foo || 'foo'; 
    this.bar = options.bar || 'bar'; 
}; 
customOptions = { 
    bar: 'foobar' 
}; 
myInstance = new myClass(customOptions); 
+0

我真的覺得我應該想到...謝謝! – 2012-03-21 02:34:30

1

你可以嘗試這樣的事:如果您在使用jQuery

myClass = function(options){ 
    var myOptions = { 
     foo: options.foo || 'foo', 
     bar: options.bar || 'bar' 
    }; 
}; 

你也可以看看http://api.jquery.com/jQuery.extend/

2

你可以做這樣的事情:通過

​​

基本上循環自定義選項傳入並添加任何缺少的選項及其默認值。在這種情況下,c.foo = 1c.bar = 5。小提琴可在http://jsfiddle.net/2Ve3M/

相關問題