五分钟教你分清伪数组与真数组

在Java Script中,有number(数字型) 、string(字符型)、object(对象)、array(数组)、boolean(布尔)这五大类型。                  

其中array和boject同为引用类型,使用typeof查看其类型的话,都会显示object,与此不同的是,数组的原型链上有boject的原型,帮数组能除了能使用array的方法外,还能使用object的方法,而object的原型链上只能使用object的方法,而不能使用array原型上的方法。              

数组拥有的索引长度属性,也就是length属性,使用在object上会显示undefined,可以得知object不可使用array上的方法。

那么伪数组呢,我们对伪数组使用typeof的话,会得到一个object的结果,对其使用.lenth的话,也会显示其拥有的数据长度,也能对伪数组使用索引得到相应的值,单单以此来看的话,伪数组好像跟真数组并没有区别,当我们对伪数组使用真数组上的方法时,程序大都会无效和报错,所以伪数组实际是个对象,.length是其对象的一个键值,我们知道,对象的键值通常是不会自动更新的,当我们改变伪数组的长度时,其length得到的结果不会发生变化,也就是说其.length是不会自动更新的,而数组的.length是会随数组索引长度更新。

那么我们可以得出以下结论:

1、伪数组是一个对象,其有length的键值

2、伪数组不能使用真数组的方法,其length的值不会自动更新

好,那么如何把伪数组转换成真数组呢?

首先我们在上面已经得知object的原型链上是没有array的原型的,帮object不能使用array原型上的方法,而伪数组是一个object类型的数据,想要变成真数组,那就得能使用array原型上的方法,故把伪数组的原型指向到array原型上,就能使用array原型上的方法,也就是说伪数组转换成为了一个真数组,具体操作如下:

1、使用from方法:

var arr=Array.from(伪数组)

     其返回的值arr为真数组;

2、使用call方法:

var arr = Array.prototype.slice.call(伪数组);

其返回值arr为真数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值