将JavaScript getter / setter添加到本机不可配置属性

时间:2012-02-07 16:37:43

标签: javascript getter-setter defineproperty

我使用特殊的getter / setter来拦截对对象属性所做的更改,它目前适用于任何普通的用户定义属性。但是,如果我可以将相同的想法用于内置属性,例如HTMLInputElement.valueArray.length,我会喜欢,但遗憾的是,这些属性被定义为不可配置,因此我收到错误尝试使用getter / setter重新定义它们时。

我只是想知道是否有任何(可靠的)黑客行为可以强制重新定义这些内容而不会破坏其内部操作。

如果没有,我可能会被迫为所有这些定义替代属性,这些属性只是映射到本机属性而是使用它们,但这样做并不理想。

2 个答案:

答案 0 :(得分:0)

稍后使用JavaScript 1.8.1:Defining getters and setters

答案 1 :(得分:-2)

这绝不是一个好的做法,但如果你真的需要,那么这些函数是在原型级别定义的:

Array.prototype.length = (function(){})();

好吧,我认为即使这种方法不适用于某些功能,它们也必须受到保护