簡體   English   中英

JavaScript:如何在不使用Object.defineProperty的情況下定義不可枚舉的方法?

[英]JavaScript: How to Define a Non-Enumerable Method without using Object.defineProperty?

我想為Object添加一個方法,但現在所有的數組和對象都有它。 當我使用for(.. in ..) ,它被驅使,這對我的軟件來說是一個問題。 所以,我需要讓我的方法不可枚舉。

我知道有一個Object.defineProperty() ,但它不受舊瀏覽器(仍然存在)甚至Konqueror的最新版本的支持。

還有另一種方法可以使方法不可枚舉嗎?

不。這就是為什么在沒有立即檢查hasOwnProperty情況下使用JavaScript for..in被認為是不好的做法。 即,你應該總是:

for (var item in obj) {
    if (obj.hasOwnProperty(item)) {
        // ...
    }
}

如果在沒有hasOwnProperty檢查的情況下使用for..in JSLint等工具將在代碼中報告錯誤。

對於ECMAScript 3(在舊瀏覽器中使用),您無法更改可枚舉屬性。
如果要過濾方法,也許可以檢查對象的類型(.. in ..)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM