[英]Watch change in variables
我在javascript中有以下變量:
var stC = {
kosten: 5,
tijd: 4,
locatie: 3,
beoordeling: 2,
garantie: 1
};
例如,如果stC.kosten
更改為3,我想更改具有相同值的變量,在此示例中, stC.locatie
更改為stC.kosten
的舊值。
因此,如果stC.kosten
變成3, stC.locatie
變成5。
或者,如果stC.beoordeling
變成5,而stC.kosten
變成2。
嘗試搜索,但找不到任何解決問題的方法。
有誰知道我該怎么做?
像這樣嗎
var stC = { kosten: 5, tijd: 4, locatie: 3, beoordeling: 2, garantie: 1 };
function changeValue(obj, key, value){
var current = obj[key],
match = getKeyByValue(obj, value);
if(!match) return;
// swap values
obj[key] = value;
obj[match] = current;
}
function getKeyByValue(obj, value){
return Object.keys(obj).filter(function(key) {
return obj[key] === value;
})[0];
}
changeValue(stC,
'kosten', // property to change
3); // new value
如果要使用此IE9之前的版本,請使用polyfill作為Object.keys 。
stC.prototype =
{
setKosten : function(value)
{
this.kosten = value;
this.locatie = whatever;
}
};
使用對象觀察者。
Object.observe(stC, function(changes) {
changes.forEach(change) {
switch (change.name) {
case "kosten":
change.object.locatie = change.oldValue;
...
...
}
});
});
目前,您只能在Chrome中找到它。 請參閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe 。
您可以使用getter和setter
var o = {
_kosten: 3,
get kosten() { return this._kosten; },
set kosten(x) { this._kosten = x; /* DO YOUR ADDITIONAL LOGIC HERE */ }
};
這里是MDN文檔https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters , https://developer.mozilla.org/en-US/docs/Web/JavaScript/參考/功能/獲取 , https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/set
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.