首页 > 编程语言 > 详细

javaScript 类数组

时间:2020-02-04 11:22:51      阅读:66      评论:0      收藏:0      [点我收藏+]

js中有一个很有意思的数据结构叫类数组,它的本质是一个object,示例如下:

var obj = {
  "0":"a",
  "1":"b",
  "2":"c",
  "length":3
};

这个object具有两个典型特征:1.属性名类似数组的索引("0", "1", "2"……) 2.具有length属性

既然是个object,自然就可以拥有方法,比如数组的push和splice方法。很神奇的一点就是,如果给一个类数组手动添加splice方法,它在控制台的显示就像一个真正的数组一样:

技术分享图片

有个类数组的面试题:

var obj = {
    ‘2‘: 3,
    ‘3‘: 4,
    ‘length‘: 2,
    ‘splice‘: Array.prototype.splice,
    ‘push‘: Array.prototype.push
}
obj.push(1)
obj.push(2)
console.log(obj)

这里考察的主要的点其实是push方法的本质,如果我们自己实现一个push,会怎么写呢?大概会是这样:

Array.prototype.push = function(target){
    this[this.length] = target;
    this.length ++;
}

再看上面的题,obj.push(1),可以理解为执行了以下代码:

obj[obj.length] = 1;
obj.length ++;

所以结果就是下面这样:

技术分享图片

 

类数组有两个典型应用,一个是arguments,另一个是dom操作中类似getElementsByTagName()这类方法返回的数据(dom操作涉及的方法,如果返回一个集合,都会以类数组的形式返回)。

 

javaScript 类数组

原文:https://www.cnblogs.com/nguxg/p/12256121.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!