迭代String.prototype

时间:2011-10-14 16:47:57

标签: javascript for-in-loop

我知道for in循环可以帮助迭代对象,原型和集合的属性。

事实是,我需要迭代String.prototype,虽然console.log(String.prototype)显示完整的原型,但是当我这样做时

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

显示原型中元素的名称,它不显示任何内容,就好像它是空的一样。

JavaScript引擎是否隐藏了基本的原型方法,或者我做错了什么?

3 个答案:

答案 0 :(得分:4)

规范说:

  

如果此规范未明确指定属性的值,则使用表7中定义的默认值。

     

表7 - 默认属性值

     

...

     

[[Enumerable]] false

因此它不可枚举(与所有内置属性一样)。

答案 1 :(得分:3)

与其他人所说的一样,String.prototype中的所有属性都是不可枚举的。要获取所有属性的列表,包括不可枚举的属性,请使用Object.getOwnPropertyNames()(仅限较新的浏览器)

答案 2 :(得分:1)

通过for(prop in obj)迭代无法看到原生方法。

循环浏览内置对象时,可以找到属性。在这种情况下,页面使用自定义方法扩展了原型。框架(例如jQuery)通常以这种方式修改内置对象。