Javascript - 覆盖Object内的属性(而不是方法)

Ran*_*rma 4 javascript

让我们举一个例子来解释这个问题.我有一个文本框.文本框(每个文本框)都有一个名为"value"的属性.我想过来骑这个textbox.value和新的东西.当文本框中的文本为'ranjan'时,该textbox.VALUE属性返回'ranjan'.现在我想覆盖这个,这样当你输入时你textbox.VALUE会得到一个不同的东西,例如RaNjAn或者说,Ranjan先生或其他什么.

我们可以使用Object.PROTOTYPE属性来覆盖方法.但是我们如何为对象内的非函数对象做这件事,例如在这种情况下为'value'属性.

如果我需要更清楚地提出问题,请提及.

问候 - Ranjan.

tec*_*bar 7

您可以使用定义元素的自定义属性 Object.defineProperty

如果你有一个需要获取元素值的Mr. <value>情况,那么这种方法将是有用的.覆盖标准属性可能不是一个好主意.

演示:http://jsfiddle.net/zvCGw/2/

代码:

var foo = document.getElementById('foo');

Object.defineProperty(foo, "xvalue", {
    get: function() {
        return 'Mr. ' + foo.value;
    },
    set: function(_newValue) {
        foo.value = _newValue;
    }
});

foo.xvalue = 'Hello';

alert(foo.xvalue);
Run Code Online (Sandbox Code Playgroud)