javascript中怎么定义类数组?

而对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为“类数组对象”。

类数组对象是具有以下两点的对象:

  • 拥有length属性,其它属性(索引)为非负整数

  • 不具有数组所具有的方法

类数组:本质是一个对象,只是这个 对象 的属性有点特殊,模拟出数组的一些特性。

如何手动创建类数组对象

1、首先创建一个空对象

var array_like = {};//创建一个空对象

2、为对象直接定义数字下标的属性,这在其他语言里是绝对不允许的,对象属性不能使用数字开头,但JS里是可以的,甚至使用中文都可以

array_like[ 0 ] = "test 0";
array_like[ 1 ] = "test 1";
array_like[ 2 ] = "test 2";
array_like[ 3 ] = "test 3";

3、关键点,为对象设置length属性和splice属性为数字和函数

//关键点
array_like.length = 4;//为对象设置length属性
array_like.splice = [].splice;//同时设置splice属性为一个函数

PS:设定splice属性其实是为了欺骗浏览器的控制台,另其显示出数组的模样

实例:定义一个类数组对象“a”:

var a= {};

var i = 0;

for(i=0; i<10 ; i++){

  a[i] = i*i;

}

a.length = i;

var total = 0;

for(var j=0; j< a.length; j++){

  total += a[j];

}

使用类数组示例:

<!DOCTYPE html>
<html> 
    <head>
        <meta charset="UTF-8">
        <title>类数组</title>
    </head>
    <body>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <script type="text/javascript">
            //当我们通过标签选择器获取<div>,并在控制台打印时,返回的值便是一个典型的类数组。
            var divs = document.getElementsByTagName("div"); 
            console.log(divs)
            //定义一个数组
            var arr = ["jack","mack","sunny"];    
            //定义一个类数组对象
            var obj = {
                0 : "jack",
                1 : "mack",
                2 : "sunny",
                length : 3,
                push : Array.prototype.push,
                splice : Array.prototype.splice
            }
            
            arr.push("张三")
            obj.push("张三")
            console.log(arr)
            console.log(obj)
            //循环遍历
            for(var i = 0;i < arr.length;i++){
                console.log(arr[i])
            }
            for(var j = 0;j < obj.length;j++){
                console.log(obj[j])
            }
        </script>
    </body>
</html>

类数组表现

与普通对象不同的是,类数组对象拥有一个特性:可以在类数组对象上应用数组的操作方法。

比如,在ECMAScript 5标准中,可以用以下方法来将上面的对象o合并成字符串:

console.log(Array.prototype.join.call(o));//"42,52,63"

也可以在类数组对象上使用slice()方法获取子数组:

console.log(Array.prototype.slice.call(o, 1, 2));//[52]

想要了解更多前端知识,可访问 前端开发学习!!

以上就是javascript中怎么定义类数组?的详细内容,更多请关注易知道|edz.cc其它相关文章!

推荐阅读