如何检测对象的change事件的属性值

How to detect property value onchange event of an object?

本文关键字:change 事件 属性 对象 何检测 检测      更新时间:2023-09-26

我有这个对象:

var Settings = {  
    color: localStorage.color,  
    size : localStorage.size
};  

我想在新值更改后自动将其保存到localStorage,这意味着我想做这样的事情:

Settings.onchange = function(p){  
    localStorage[p] = this[p];
};  

有可能吗?

附言:只需要Chrome支持。

根据@RobG的评论,我写了这个函数,它起作用了!

function onPropertyChange(o, callback){
    for(var p in o){
        if(o.hasOwnProperty(p)){
            var originalVal = o[p];
            Object.defineProperty(o, p, {
               get: function(){
                   return originalVal;
               },
               set: function(val){
                   callback.call(o, p, val);
                   return originalVal = val;
               }
            });
        }
    }
}  
// example:  
var Settings = {
    color: localStorage.color || "red",
    size : localStorage.size  || "12px"
};
onPropertyChange(Settings, function(p, val){
    localStorage[p] = val;
});  

要点如下:https://gist.github.com/1897209