Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
549 views
in Technique[技术] by (71.8m points)

javascript中类数组对象的内部存储结构怎样的

js中一般认为类数组满足下面几个条件
1一个对象的属性名是正整数
2有length属性,属性值为正整数
3不是数组
在jq中还有DOM中大量应用类数组,那为什么类数组也能像数组一样进行遍历,其可以调用Array.prototype.方法()?原理是什么,类数组中数据的存储结构又是怎样的,与一般对象有什么不同,与真正的数组又有什么不同?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

1.遍历通过的是length,以及i++,这么个东东,那个对象let s = {0:'a',1:'b'}中s[0]就是'a'呀。所以可以像数组一样遍历咯。

2.第二个问题,调用Array.prototype中的方法,你不妨打印出来看一下

Array.prototype

而所谓的类数组是Object,所以你再答应一下Object.prototype

Object.prototype

所以说,类数组是没有所谓的push,pop之类的方法,当然了,你也可以自己写这些方法

3.存储结构嘛,就是Object,只不过规定好了你问题中前两个条件。与一般对象不同,我没明白一般对象是什么,难道类数组不是一般对象?

4.与数组的不同嘛,这个别人也写的很全,你可以参考一下

ps:都是个人理解,有不正确的或者补充请指教,互相学习~


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...