markdown 数组,对象和类数组对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown 数组,对象和类数组对象相关的知识,希望对你有一定的参考价值。

>数组

定义:有限个类型相同的变量的有序的数据集合,索引为从0开始且自然增长的整数,包含名为length的属性表示数组元素的个数

作用:在单个的变量中存储多个值

>对象

定义:有限个无序的由键->值组成的数据集合,其元素的键名和值都可以自定义

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...

JavaScript 允许自定义对象

对象只是带有属性和方法的特殊数据类型

>类数组对象

把数组的索引值看成元素的键名,元素看成值,并显示定义length属性

形如:

```
let obj = {
  0: 'qzy',
  1: 22,
  2: false,
  length: 3
}
```

>类数组对象可以使用Array对象原生方法进行操作

```
//定义数组和类数组对象
let arr = [2,5,23,5,52];
let obj = {0:4,1:32,2:324,length:3};
//读写操作
console.log(arr[1],obj[1],arr["length"],obj["length"]);//5,32,5,3
arr[0] = 4;
obj[0] = 6;
console.log(arr[0],obj[0]);//4,6
//遍历
for(var i=0;i<arr.length;i++){
  console.log(arr[i]);
}
for(var i=0;i<obj.length;i++){
  console.log(obj[i]);
}
```

>在浏览器环境中,document.getElementsByTagName()语句返回的就是一个类数组对象

>在function调用中,function代码内的arguments变量(保存传入的参数)是一个类数组对象

>在ECMAScript 5标准中,字符串string是一个只读的类数组对象

```
var s = "History";
console.log(s[3]); //t
console.log(Array.prototype.join.call(s, " ")); //H i s t o r y
```

>可以使用对象来模拟数组,从数据结构上可以把js的数组归为对象

>但两者本身所继承来的方法和一些属性是不同的

>把数组看成是特殊的对象可以方便理解

>Array.prototype.slice.call(arguments)可以将类数组转化为真正的数组

```
Array.prototype.slice = function(start,end){
     var result = new Array();
     start = start || 0;
     end = end || this.length; //this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键
     for(var i = start; i < end; i++){
          result.push(this[i]);
     }
     return result;
}

//Array.prototype.slice.call({0: 1, 1: 2, 2: 3, length: 3})
//[1, 2, 3]
```

以上是关于markdown 数组,对象和类数组对象的主要内容,如果未能解决你的问题,请参考以下文章

Unit02-OOP-对象和类,数组(下)

call(),apply()方法和类数组对象arguments

C++:对象和类|| this指针对象数组类作用域抽象数据类型章末总结

C++:对象和类|| this指针对象数组类作用域抽象数据类型章末总结

js 数组和类数组的区别

markdown 10. Python - 对象和类