__defineSetter__
似乎不再适用于firefox最新版本。它适用于Chrome。
你知道吗?任何做同样事情的替代功能,也适用于其他浏览器,如IE,Opera,Safari?
答案 0 :(得分:8)
__defineGetter__
和__defineSetter__
仍然在最新的Firefox中,我不相信有计划在短期内删除它们。从长远来看,ECMAScript 5指定了一种不同形式的getter和setter,最终将进入所有浏览器。
以下是ECMAScript 5 getter和setter的示例。它目前适用于IE 9,Chrome 5,Safari 5:请参阅here以获取兼容性表格。
var o = {};
Object.defineProperty(o, "p", {
get: function() {
return "A property";
},
set: function(val) {
alert("Setting " + val + "!");
}
});
修改强>
根据要求,这是__defineGetter__
和__defineSetter__
的工作示例,相当于上面的ES5代码:
var o = {};
o.__defineGetter__("p", function() {
return "A property";
});
o.__defineSetter__("p", function(val) {
alert("Setting " + val + "!");
});
答案 1 :(得分:0)
对于firefox你应该使用“watch”方法。
if(Object.prototype.watch){
instance.watch("property", function(id, prevValue, newValue){
//do operaions here on the value ---
return newValue
}
}
...其中instance是对象,属性是您要监视更改的实际属性。