对象的介绍
- 对象的概念
- 是复杂数据类型的一种,是一种数据的集合
- 对象在现实生活中,一般用来描述事物
- 对象的语法
- 属性名:属性值
- 键值对
- key:value
- key:value,key:value,…
- 对象的标志是花括号
- {key:value,key:value,…}
- 对象的创建
- 字面量
var obj = {name:"张三"}
- 构造函数:批量
var obj = new Object();
- 对象的使用
- 对象的组成和意义 - 组成键值对
- 关系
四、数组
- 概念
- 数据的组合
- 数据的集合,类似于对象,但是没有键,只有索引
- 数组或对象的应用场景
- 当需要操作多个数据,但是程序只支持一个数据时,默认属于同一类
- 数组的创建
- 字面量
var arr =[];
- 构造函数
var arr2 = new Array();
- 当只有一个数值 型数据时,字面量就是一个数据,构造函数会将数值型数据解析成长度
- 数组的使用
- 索引+长度
- 方法,功能,某个对象的功能,属于某个对象的函数
方法 | 功能 | 参数 | 返回值 | 是否影响原数据(数组) |
---|
push() | 最后增加 | 有参数,要插入的元素 | 返回新数组的长度 | 是 |
unshift() | 开始增加 | 有参数,要插入的元素 | 返回新数组的长度 | 是 |
pop() | 删除最后 | 无 | 返回被删除的元素(从数组最后删除一位) | 是 |
shift() | 删除开始 | 无 | 返回被删除的元素(从数组最开始删除一位) | 是 |
slice(strat,end) | 从start开始截取,到end结束,不包括end,注意start和end都是索引值 | 有 | 返回截取到的新数组 | 否 |
splice(start,length,content) | 从start开始,length删除的长度(个数),content要添加的内容或替换的内容,可不写 | 有 | 返回被删除的元素组成的数组 | 是 |
concat() | 用于连接两个或多个数组 | 数组或者数组元素 | 返回一个新数组 | 否 |
join() | 转字符 | 无或间隔符 | 返回转之后的字符 | 否 |
reverse() | 数组元素反转 | 无 | 反转之后的数组 | 是 |
sort() | 排序,默认是字符的排序:逐位比较例如:“2”>“19” true | 函数(可选),该函数接收两个形参(a,b), return a-b从小到大排序 return b-a从大到小排序 | 返回排序后的数组 | 是 |
-
var arr = [23,46,85,20];
var res = arr.sort(function(a,b){
return a - b;})
console.log(res);
res = [20,23,46,85];
5. 数组的分类
- 数组中可以放任何数据,甚至可以放简单的表达式
- 当一个数组中的数据,全是字符时,叫字符数组
- 当一个数组中的数据,全是数值时,叫数值数据
- 当一个数组中的数据,全是数组时,叫数组数组(二维数组,多维数组)
- 访问方式 (逐层解析数组)
- 当一个数组中的数据,全是对象时,叫对象数组(json数组)
- 访问方式(逐层解析数组和对象)
6. json
- json独立的通用数据,与任何编程语言无关,只是因为其格式参考了js的对象
- 所以,在js中有时也将对象称为json
- 所以全是对象的数组,也可以称为json数组
7. 基本数据 和复杂数据
- 基本数据:string \ number \ boolean \ undefined \ null
- 值传递的数据
- 复杂数据:object \ function \ array
- 引用传递的数据
8. 内存中空间的划分-栈和堆
- 硬盘,存储空间,存储数据,空间大
- 内存,执行空间,执行程序的,空间小
- 栈:基本数据,复杂数据的地址
- 变量名,空间小,稳定,不可被修改
- 先进后出
- 堆:复杂数据的数据
- 数据,空间大,可被修改
- 先进先出
- 关系
- 一对一
- 多对一
- 不能一个栈对多个堆,即不能一对多
9. 值传递和引用传递
- 传递:复制
- 值传递:复制的就是值
- 引用传递:引用就是地址,复制的是地址,不是值
- 浅拷贝:只是复制复杂数据的地址,不复制值。导致修改新数据,影响老数据
- 深拷贝:复制值,修改新数据,不会影响老数据,这才叫复制
- 先解析,再拷贝
- 对象的解析拷贝(深拷贝)见代码
var obj = {a:10,b:20,c:"hello"}
var obj2 = {};
for(var i in obj){
obj2[i] = obj[i]
}
obj2.b = "666";
console.log(obj);
console.log(obj2);
- 数组的解析拷贝(深拷贝)见代码
var arr = [3,4,5];
var arr2 = [];
for(var i=0;i<arr.length;i++){
arr2[i]=arr[i]
}
arr2[i] = "hello";
console.log(arr);
console.log(arr2);