2011-10-14 48 views
4

我知道for in循環可以幫助迭代對象,原型和集合的屬性。迭代String.prototype

事實是,我需要遍歷String.prototype,雖然console.log(String.prototype)顯示完整的原型,當我做

for (var prop in String.prototype) { 
    console.log(prop); 
} 

顯示在原型中的元素的名稱,它會顯示什麼,彷彿它是空的。

JavaScript引擎是否隱藏了基本的原型方法,或者我做錯了什麼?

+0

@pimvdb:Darn;打敗了我。 –

+0

@Tomalak Geret'kal:編輯還是答案? :) – pimvdb

+0

@pimvdb:當然前者! –

回答

4

的規範說:

如果一個屬性的值不被本說明書中用於命名屬性顯式指定,在表7中定義的默認值被使用。

表7 - 默認屬性值

...

[可枚舉]假

因此,它是不可枚舉(與所有內置屬性)。

1

本地方法通過迭代不可見。

當您循環訪問內置對象時,可以找到屬性。在這種情況下,該頁面使用自定義方法擴展了原型。框架(如jQuery)通常以這種方式修改內置對象。

3

和其他人一樣,String.prototype中的所有屬性都是不可枚舉的。要獲得所有屬性的列表,包括非枚舉屬性,請使用Object.getOwnPropertyNames()(僅適用於較新的瀏覽器)