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

https://img4.mukewang.com/5bc5a03000018dd104190130.jpg

上面可以遍历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这个数组对象,包含一些方法,属性都遍历出来了,多简洁,减低程序员记忆上的负担。


www说
浏览 674回答 1
1回答

动漫人物

这不是不足,而是你的理解没有到位。for in遍历,只会遍历能够枚举的属性,而Array.prototye里面的方法都是不可枚举的,自然就无法遍历。另外什么情况下我们需要遍历数组?难道不是因为我们想取数组里面的元素吗?如果这个时候把数组的方法遍历出来了,反而奇怪了。所以这个设计完全是合理的。要列举也行,如下:Object.getOwnPropertyNames(Array.prototype)个人认为完全没有必要,查询API是更好的方式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript