我使用特殊的getter / setter来拦截对对象属性所做的更改,它目前适用于任何普通的用户定义属性。但是,如果我可以将相同的想法用于内置属性,例如HTMLInputElement.value
或Array.length
,我会喜欢,但遗憾的是,这些属性被定义为不可配置,因此我收到错误尝试使用getter / setter重新定义它们时。
我只是想知道是否有任何(可靠的)黑客行为可以强制重新定义这些内容而不会破坏其内部操作。
如果没有,我可能会被迫为所有这些定义替代属性,这些属性只是映射到本机属性而是使用它们,但这样做并不理想。
答案 0 :(得分:0)
稍后使用JavaScript 1.8.1:Defining getters and setters
答案 1 :(得分:-2)
这绝不是一个好的做法,但如果你真的需要,那么这些函数是在原型级别定义的:
Array.prototype.length = (function(){})();
好吧,我认为即使这种方法不适用于某些功能,它们也必须受到保护