2012-02-07 64 views
1

我使用特殊的getter/setter來攔截對對象屬性所做的更改,它對於任何普通用戶定義的屬性都非常適用。但是,如果我可以將相同的想法應用於內置屬性(如HTMLInputElement.valueArray.length),但我將,但這些不幸被定義爲不可配置,因此嘗試使用getter/setter重新定義它們時出現錯誤。將JavaScript getter/setter添加到本機的不可配置屬性

我只是想知道是否有任何形式的(可靠)黑客,我可以做到這一點,強制這些重新定義,而不會破壞他們的內部操作。

如果不是這樣,我可能會被迫爲所有這些簡單地映射到本地屬性並使用它們來定義替代屬性,但這並不理想。

回答

-2

這是不以任何方式一個很好的做法,但如果你真的需要,這些功能是在原型水平,從而定義:

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

好吧,我想即使這個方法不工作一些功能,它們必須得到保護

+0

正好呀,他們定義爲不可配置的,這意味着你不能改變自己的定義。只是好奇,是否有辦法繞過它。 – devios1 2012-02-08 15:12:55

+0

[] .length是* not *函數。 – Michael 2014-12-31 16:01:14

+0

是的,但如果它不是隻讀的,我們可以將它重寫爲一個 – 2015-01-12 14:03:57