__defineSetter__替换firefox 3.5.x及以上版本

jac*_*ack 0 javascript

似乎__defineSetter__不再适用于firefox最新版本.它适用于Chrome.

你知道任何替换功能做同样的事情,也适用于其他浏览器,如IE,Opera,Safari?

Tim*_*own 8

__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)