我有这个对象:
var Settings = {
color: localStorage.color,
size : localStorage.size
};
Run Code Online (Sandbox Code Playgroud)
我想在更改后自动将新值保存到 localStorage,这意味着我想做这样的事情:
Settings.onchange = function(p){
localStorage[p] = this[p];
};
Run Code Online (Sandbox Code Playgroud)
是否可以?
PS:只需要 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;
});
Run Code Online (Sandbox Code Playgroud)
要点在这里: https: //gist.github.com/1897209
| 归档时间: |
|
| 查看次数: |
4604 次 |
| 最近记录: |