《js高级程序设计》学习笔记--5.引用类型

1.Object类型

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
		/*
		 创建Object实例的方式:
		 	1.new操作符
		 	var person = new Object();
		 	person.name = 'zhangsan';
		 	person.sex = '男';
		 	2.字面量
		 	var person = {
		 		name:'zhangsan';
		 		sex:'男';
		 	}
		 访问对象属性
		 	1.点语法
		 	alert(person.name);
		 	2.方括号语法   要访问的属性以字符串形式放在方括号里 也可以放变量
		 	alert(person['name']);
		 	var str = 'name';
		 	alert(person[str]);
		 * */
		
		
			var person = new Object();
			person.name = 'zhangsan';
			person.gotoschool = function(){
				alert(1);
			};
			person.gotoschool();
			
		</script>
		
		
		
	</body>
</html>

2.Array类型

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Array类型</title>
	</head>
	<body>
		<script type="text/javascript">
			/*
			 ECMAScript 数组的每一项可以保存任何类型的数据
		创建数组
			 1.构造函数
			 var array0 = new Array();
			 var array1 = new Array(10);  //创建一个length为10的数组
			 var array2 = new Array('html','css','js') //创建一个包含3个字符串的数组
			 2.字面量
			 var arr = [1,2,3];
		获取数组中的元素
			 通过下标访问
			 var arr = [1,2,3,4];
			 alert(arr[0]);  //获取数组第一个元素 1
			 arr[4] = '5';  //新增第五个元素   数组length变为5
		数组的length
			可以通过设置length,向数组中增加元素或者删除元素   可以用 length=0; 来清空数组 
			
			
	1.检测数组
		对于一个全局作用域 可以用instanceof操作符
		如果一个网页中包含多个框架,存在2个以上不同的全局执行环境,从而存在2个以上不同版本的Array构造函数
			可以用Array.isArray()方法,这个方法的目的是最终确定某个值是不是数组,不管它始终爱那个全局执行环境找那个创建的
			var arr = [1,2,3,4];
			 arr[6] = 1;
			 alert(arr[6]);  //获取数组第一个元素 1
			 if(Array.isArray(arr)){
				//对数组进行某些操作
				alert(arr);
			}
			 if(arr instanceof Array){
			 	alert(arr);
			 }
			 alert(arr.length);
	2.转换方法
	继承的方法
		toString() 把数组转换为字符串 ,返回结果
		valueOf() 返回数组对象的原始值
		toLocaleString() 把数组转换为本地数组 返回结果
	数组的方法
		join()  使用不同的分隔符来构建这个字符串  参数作为分隔符   返回包含所有数组元素的字符串
		
		var array0 = ['html','css','js'];
			alert(array0.toString());  //html,css,js
			alert(array0.valueOf()); //html,css,js
			
			var arr1 = array0.toLocaleString();//html,css,js
			alert(arr1);
			alert(array0.join('&'));//html&css&js  如果不给join()方法传入任何值,或者传入undefined 默认使用 , 分隔符
			
	3.栈方法
	栈数据访问规则LIFO(last-in-first-out,后进先出)
		push()可以接受任意数量的参数,把它们逐个添加到数组末尾  返回 修改后的  数组长度	
		pop()方法从数组末尾移除最后一个元素,减少数组的length值, 返回被移除的元素	
			
			var arr = ['html','css','js'];
			alert(arr.push('html5','css3')); //5
			alert(arr); //'html','css','js','html5','css3'
			alert(arr.pop()); // css3
			alert(arr); // 'html','css','js','html5'
			
	4.队列方法
	队列数据访问规则FIFO(first-in-first-out,先进先出)
		push()
		shift()方法从数组前端移除第一个元素,减少数组的length值 返回被移除的元素
		unshift()可以接受任意数量的参数,把它们逐个添加到数组前端  返回 修改后的  数组长度
			var arr = ['html','css','js'];
			alert(arr.push('html5'));//4
			alert(arr.shift()); //html  length==3
			alert(arr.unshift('html')); //length==4
			alert(arr); //html,css,js,html5
	
	5.重排序方法
		reverse() 倒序排序
		sort() 升序排序  sort()方法会调用每个数组元素的tostring()转型方法,然后比较得到的字符串, 所以即便数组元素是 数值 ,
			sort()方法也比较的是 字符串, 这个排序方法明显不是我们想要的。 所有 sort()方法可以接收一个比较函数作为参数
			以便我们指定那个值位于那个值的前面
		
		reverse()h和sort()方法返回的是 经过 排序后的数组  是把原数组排序,而不是生成了一个新的数组
			
			var arr = [1,2,3,14,5,6];
			alert(arr.reverse());//6,5,14,3,2,1
			alert(arr); //6,5,14,3,2,1
			alert(arr.sort());//6,1,14,2,3,5
			alert(arr); //6,1,14,2,3,5
			function compare(value1,value2){
//				if(value1<value2){
//					return -1;
//				}else if(value1>value2){
//					return 1;
//				}else{
//					return 0;
//				}

				return value1 - value2;
			}
			alert(arr.sort(compare));//1,2,3,5,6,14
			alert(arr); //1,2,3,5,6,14
		
		
	6.操作方法
			concat()基于当前数组中的所有元素创建一个新的数组 没有参数的话返回复制当前数组返回  参数是数组的话
				将参数中的没一个元素都添加到结果数组的末尾 参数不是数组的话 就直接将值添加到结果数组的末尾
				
			slice()基于当前数组中的一个或多个元素创建一个新的数组  可接收一个或两个参数,  即返回元素的起始和结束 位置 
				一个参数的话,返回参数指定位置到当前数组末尾的所有元素
				两个参数,返回起始和结束位置之前的元素(不包括结束位置的元素)
			concat()和slice()都不会影响原始数组  新建了一个数组
			
			var arr = ['html','css','js'];
			var arr1 = arr.concat(['html5','css3']);
			alert(arr1); // html,css,js,html5,css3
			alert(arr1.slice(1,3));  // css,js
			alert(arr);// html ,css , js
			
			splice()主要用来向数组中插入元素  始终都会返回一个数组,该数组中包含从原始数组中删除的元素(没有删除,则返回空)
				删除:可以删除任意数量的元素,传入两个参数:要删除的第一个元素的位置和要删除元素的个数
				插入:可以向指定位置插入任意数量的元素 传入三个参数:起始位置、要删除元素个数、要插入的元素   要插入元素数量不受限制
				替换:可以向指定位置插入任意数量的元素,并且删除任意数量的元素  传入三个参数:起始位置、要删除元素个数、要插入的元素
			
			splice()会改变原始数组
			
			var arr = ['html','css','js'];
			alert(arr.splice(0,1));//html  返回删除的元素
			alert(arr); // css,js       
			alert(arr.splice(0,0,'html')); // ‘’   返回删除的元素 因为是插入元素 则为空
			alert(arr); // html,css,js
			alert(arr.splice(0,2,'html5','css3')); // html,css   返回删除的元素 
			alert(arr);// html5,css3,js
			
			
	7.位置方法
		indexOf() 两个参数:要查找的元素、查找起点位置(可选  ) 从数组位置0开始往后查找
		lastIndexOf() 两个参数:要查找的元素、查找起点位置(可选  ) 从数组位置(length-1)开始往前查找
		这连个方法都返回要查找元素 位置 ,  没有找到返回-1.  查找的时候使用 === 操作符
			var arr = [1,2,3,4,5,6,7,8,9];
			alert(arr.indexOf(4));//3
			alert(arr.lastIndexOf(4));//3
			alert(arr.indexOf('4')); // -1
			alert(arr);
			
	
	8.迭代方法
		every() 对数组中每一个元素运行给定函数,如果该函数对每一个元素都返回true,则返回true   遇到false则停止
		some()	对数组中每一个元素运行给定函数,如果该函数对任意一个元素都返回true,则返回true   遇到true则停止
		filter() 对数组中每一个元素运行给定函数,返回 函数返回true的元素组装成的数组
		forEach() 对数组中每一个元素运行给定函数,无返回值
		map() 对数组中每一个元素运行给定函数,返回函数执行结果的数组
		
		迭代方法都不会修改数组的值
		
	
		var number = [1,2,3,4,5,6,7,8,9];
		var result = number.some(function(value,index,arr){
			alert(value+"+"+index+"+"+arr);
			return value>1;
		});
		alert(result);
		
		
	9.缩小方法
		reduce() 从数组的第一个元素开始,逐个遍历到最后
		reduceRight() 从数组的最后一个元素开始,向前遍历到第一个元素
		
			pre上一次值  第一次为数组第一个元素 以后为函数上一次返回的值
			cur 当前元素的值 第一次为第二个元素 
			index 元素位置 从1开始
			arr 数组
			 
			 reduceRight() 跟reduce() 作用相似  不过是方向相反而已
			 
			 
		var number = [1,2,3,4,5,6,7,8,9];
		alert(number.reduce(function(pre,cur,index,arr){
			
			alert(pre+"+"+cur+"+"+index+"+"+arr);
			return pre+cur;     
	
		
		}));
			 * */
		
		
			
		</script>
	</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值