将JavaScript getter/setter添加到本机不可配置属性
我使用特殊的getter/setter来拦截对对象属性所做的更改,目前它对任何普通的用户定义属性都非常有效。但是,如果我可以对内置属性(如HTMLInputElement.value或Array.length)采用相同的方法,我会很高兴,但不幸的是,这些属性被定义为不可配置,因此在尝试使用getter/setter重新定义它们时会出错 我只是想知道是否有什么可靠的黑客,我可以做,以迫使这些被重新定义,而不破坏其内部运作将JavaScript getter/setter添加到本机不可配置属性,javascript,getter-setter,defineproperty,Javascript,Getter Setter,Defineproperty,我使用特殊的getter/setter来拦截对对象属性所做的更改,目前它对任何普通的用户定义属性都非常有效。但是,如果我可以对内置属性(如HTMLInputElement.value或Array.length)采用相同的方法,我会很高兴,但不幸的是,这些属性被定义为不可配置,因此在尝试使用getter/setter重新定义它们时会出错 我只是想知道是否有什么可靠的黑客,我可以做,以迫使这些被重新定义,而不破坏其内部运作 如果不是,我可能会被迫为所有这些属性定义替代属性,这些属性只是映射到本机属性
如果不是,我可能会被迫为所有这些属性定义替代属性,这些属性只是映射到本机属性并使用它们,但这并不理想。这在任何方面都不是一个好的做法,但如果确实需要,这些函数都是在原型级别定义的,因此:
Array.prototype.length = (function(){})();
好的,我认为即使这种方法不适用于某些函数,它们也必须受到保护,这在任何方面都不是一种好的做法,但如果您确实需要,这些函数是在原型级别定义的,因此:
Array.prototype.length = (function(){})();
好的,我认为即使这种方法不适用于某些函数,它们也必须受到保护。以后使用JavaScript 1.8.1:以后使用JavaScript 1.8.1:是的,它们被定义为不可配置,这意味着你不能更改它们的定义。我只是好奇是否有办法。[]。长度不是一个函数。是的,确切地说,它们被定义为不可配置,这意味着你不能更改它们的定义。我只是好奇是否有办法解决这个问题。[]。长度不是一个函数。