为了账号安全,请及时绑定邮箱和手机立即绑定

无法遍历本地对象的属性或方法

无法遍历本地对象的属性或方法

www说 2018-09-20 10:32:50
上面可以遍历myObject 的属性 如果是var myObject=new Array();for (prop in myObject)  {console.log("属性 '" + prop + "' 为 " + myObject[prop]);} 无法遍历数组的方法,有些语言如python就可以通过反射将任何对象的属性或方法都遍历出来, js 不能对本地对象遍历它的方法,真是一个不足哈。Number对象有这些常见方法:toString,toLocalString,value,toSource,toExponetial,toFixed,toPrecision等等通常我们不能全部记住吧,如果有一种简单的反射方法,全部列出来,可以减少记忆上的负担。请看python的反射>>> x=[1,2,3]>>> dir(x)['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']这个x这个数组对象,包含一些方法,属性都遍历出来了,多简洁,减低程序员记忆上的负担。
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

这不是不足,而是你的理解没有到位。

for in遍历,只会遍历能够枚举的属性,而Array.prototye里面的方法都是不可枚举的,自然就无法遍历。另外什么情况下我们需要遍历数组?难道不是因为我们想取数组里面的元素吗?如果这个时候把数组的方法遍历出来了,反而奇怪了。所以这个设计完全是合理的。

要列举也行,如下:
Object.getOwnPropertyNames(Array.prototype)

个人认为完全没有必要,查询API是更好的方式。


查看完整回答
反对 回复 2018-10-16
  • 1 回答
  • 0 关注
  • 673 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信