似乎__defineSetter__不再适用于firefox最新版本.它适用于Chrome.
你知道任何替换功能做同样的事情,也适用于其他浏览器,如IE,Opera,Safari?
__defineGetter__并且__defineSetter__仍然在最新的Firefox中,我不相信有计划在短期内删除它们.从长远来看,ECMAScript 5指定了一种不同形式的getter和setter,最终将进入所有浏览器.
以下是ECMAScript 5 getter和setter的示例.它目前适用于IE 9,Chrome 5,Safari 5:请参阅此处获取兼容性表.
var o = {};
Object.defineProperty(o, "p", {
get: function() {
return "A property";
},
set: function(val) {
alert("Setting " + val + "!");
}
});
Run Code Online (Sandbox Code Playgroud)
编辑
按照要求,这里的工作示例__defineGetter__和__defineSetter__,等效于上面的ES5代码:
var o = {};
o.__defineGetter__("p", function() {
return "A property";
});
o.__defineSetter__("p", function(val) {
alert("Setting " + val + "!");
});
Run Code Online (Sandbox Code Playgroud)