簡體   English   中英

觀察變量的變化

[英]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

http://jsfiddle.net/0vsyj603/

如果要使用此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_settershttps://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM