对象和数组

对象的介绍

  1. 对象的概念
    • 是复杂数据类型的一种,是一种数据的集合
    • 对象在现实生活中,一般用来描述事物
  2. 对象的语法
    • 属性名:属性值
    • 键值对
    • key:value
    • key:value,key:value,…
    • 对象的标志是花括号
    • {key:value,key:value,…}
  3. 对象的创建
    • 字面量
      var obj = {name:"张三"}
    • 构造函数:批量
      var obj = new Object();
  4. 对象的使用
    • 点语法
      var obj = {};
      obj.name = "张三";
      console.log(obj.name);
      
    • 中括号语法
      var obj2 = {};
      obj2.name = "张三";
      obj2.age = 16;
      var str = "name";
      console.log(obj2[str]);
      
  5. 对象的组成和意义 - 组成键值对
    • 组成:键值对
    • 意义:存储数据,编程
  6. 关系
    • 任何两个对象都不相等
    • 如果相等了,这就是一个对象

四、数组

  1. 概念
    • 数据的组合
    • 数据的集合,类似于对象,但是没有键,只有索引
  2. 数组或对象的应用场景
    • 当需要操作多个数据,但是程序只支持一个数据时,默认属于同一类
  3. 数组的创建
    • 字面量 var arr =[];
    • 构造函数 var arr2 = new Array();
    • 当只有一个数值 型数据时,字面量就是一个数据,构造函数会将数值型数据解析成长度
  4. 数组的使用
    • 索引+长度
      • 增删改查
    • 方法,功能,某个对象的功能,属于某个对象的函数
方法功能参数返回值是否影响原数据(数组)
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 a = 10;
      	var b = a;
      	//将a复制给了b,其实就是将a的值复制给了b,b和a没有任何关系了
      	//所以修改b,没有影响a
      	b = 20;
      	console.log(a);//10
      	console.log(b);//20
      	```	   
    
	- 引用传递:引用就是地址,复制的是地址,不是值
		- 浅拷贝:只是复制复杂数据的地址,不复制值。导致修改新数据,影响老数据
		
		

  •   		var obj = {
      			name:"admin"
      		}	  
      		var obj2 = obj;
      		//将obj复制给了obj2,其实只是将obj的引用(地址)复制给了obj2,obj和obj2中保存的是同一份地址,指向的是同一值,修改其中一个值,影响另一个值
      		obj2.name = "张三";
      		console.log(obj);
      		console.log(obj2);
      		```
    
	- 深拷贝:复制值,修改新数据,不会影响老数据,这才叫复制
		- 先解析,再拷贝
			- 对象的解析拷贝(深拷贝)见代码
			

var obj = {a:10,b:20,c:"hello"}
			var obj2 = {};
			//for-in解析
			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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值