2014-09-04 47 views
0

我正在嘗試構建一個對象,該對象包含作爲屬性的頁面其餘部分的各種「設置/選項」。 這些propierties可以通過像dom交互等不同的事件來改變。js對象 - 使用單個方法更改多個特定屬性

簡化我的目標有點像這樣

var settings = { 
    opt1: false, 
    opt2: false, 
    opt3: true, 
    opt4: true, 

    change: function(a, b, c, d){ 
    this.opt1 = a, 
    this.opt2 = b, 
    this.opt3 = c, 
    this.opt4 = d, 
    } 
}; 

可以說,我需要改變OPT4,我將不得不通過的電流值或做類似如果前三個要素條件,以及。

有沒有一種方法,我可以有一個功能的變化,但也告訴哪些選項應該改變?也許像成才

settings.change({opt4:false}); 

非常感謝你

+0

我想知道你爲什麼不簡單地執行'settings.opt4 = false'? – Bergi 2014-09-04 18:27:44

回答

0
settings.change = function(obj) { 
    for (var p in obj) this[p] = obj[p]; 
}; 

OBJ必須是一個對象就像你在你的問題中寫道。

// sets opt2 to string 'two', opt4 to number 77 
// and inserts a new option opt33 with value 'new' 
settings.change({opt2: 'two', opt4: 77, opt33: 'new'}); 

如果你想徹底刪除一個選項:

settings.remove = function(name) {delete this[name];}; 

名稱必須是一個字符串(引號)。

// after this there is no opt3 inside settings any more 
settings.remove('opt3'); 
+0

真棒。謝謝。 – user2086584 2014-09-08 10:40:34