如何返回HTMLElement的重写属性的旧值?

时间:2014-06-12 16:50:34

标签: javascript override element

我使用以下方法来覆盖HTMLElement属性:

Object.defineProperty(HTMLElement.prototype, "style", {
    get: function () {
        var newValue = "some style...";
        return newValue;
    }
});

在上面的例子中,我想改变HTMLElements的style属性。但是,在某些情况下,我想返回不覆盖的属性(或本机属性)。到目前为止,我已经尝试了以下内容,但它不起作用:

var old = HTMLElement.prototype;
Object.defineProperty(HTMLElement.prototype, "style", {
    get: function () {
        if (someCondition) {
            var newValue = "some style...";
            return newValue;
        } else {
            return old.style;
        }
    }
});

1 个答案:

答案 0 :(得分:-1)

通过分配

var old = HTMLElement.prototype;

您只是制作HTMLElement原型的指针,然后重写。尝试从旧的原型创建一个新的原型。

var old = Object.create(HTMLElement.prototype);

结帐: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create