Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript getter/setter添加到本机不可配置属性_Javascript_Getter Setter_Defineproperty - Fatal编程技术网

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

将JavaScript getter/setter添加到本机不可配置属性,javascript,getter-setter,defineproperty,Javascript,Getter Setter,Defineproperty,我使用特殊的getter/setter来拦截对对象属性所做的更改,目前它对任何普通的用户定义属性都非常有效。但是,如果我可以对内置属性(如HTMLInputElement.value或Array.length)采用相同的方法,我会很高兴,但不幸的是,这些属性被定义为不可配置,因此在尝试使用getter/setter重新定义它们时会出错 我只是想知道是否有什么可靠的黑客,我可以做,以迫使这些被重新定义,而不破坏其内部运作 如果不是,我可能会被迫为所有这些属性定义替代属性,这些属性只是映射到本机属性

我使用特殊的getter/setter来拦截对对象属性所做的更改,目前它对任何普通的用户定义属性都非常有效。但是,如果我可以对内置属性(如HTMLInputElement.value或Array.length)采用相同的方法,我会很高兴,但不幸的是,这些属性被定义为不可配置,因此在尝试使用getter/setter重新定义它们时会出错

我只是想知道是否有什么可靠的黑客,我可以做,以迫使这些被重新定义,而不破坏其内部运作


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

这在任何方面都不是一个好的做法,但如果确实需要,这些函数都是在原型级别定义的,因此:

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

好的,我认为即使这种方法不适用于某些函数,它们也必须受到保护,这在任何方面都不是一种好的做法,但如果您确实需要,这些函数是在原型级别定义的,因此:

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

好的,我认为即使这种方法不适用于某些函数,它们也必须受到保护。

以后使用JavaScript 1.8.1:

以后使用JavaScript 1.8.1:

是的,它们被定义为不可配置,这意味着你不能更改它们的定义。我只是好奇是否有办法。[]。长度不是一个函数。是的,确切地说,它们被定义为不可配置,这意味着你不能更改它们的定义。我只是好奇是否有办法解决这个问题。[]。长度不是一个函数。