es6学习笔记

运算介绍

(一)解构赋值

			// let [arry1,arry2]=arry;
			let obj={
				name:"猪八戒",
				age:"18",
				jiao:function(){
					alert("dd");
				}
			};
			let {jiao}=obj;//同名函数可以直接用类赋值来用
		
			jiao();

(二) 拓展运算符(…)

      	//覆盖,后面的源对象的属性将类似地覆盖前面的源对象的属性。
			const target = { a: 1, b: 2 };
			const source = { b: 4, c: 5 };
			
			// const returnedTarget = Object.assign(target, source);
			let copy={...target};
			// let copy2=Object.assign({},target);
			// let copy3=target;
			// console.log(target);
			console.log(copy);
			console.log(copy2);
			console.log(copy3);
			// expected output: Object { a: 1, b: 4, c: 5 }
			
			// console.log(returnedTarget === target);
			// expected output: true

(三)模板字符串

			let love=`${lovely}和乃万是我最喜欢的歌手和网红`;
			console.log(love);

(四)箭头函数

1、概念

			 let obj={
				 name:"唐僧"
			 };
			
	     	function la(){
				console.log(this.name);
			}
			let le=()=>{
				console.log(this.name);
			}
			//箭头函数的this不会改变,即使使用函数
			la.apply(obj);//改变this并执行,
			le.call(obj);
			//箭头函数不能作为构造函数
			function factor(name,age){
				this.name=name;
				this.age=age;
			}
			let man=new factor("悟空",17);
			console.log(man.name);
			// let fac=(name,age)=>{
			// 	this.name=name;
			// 	this.age=age;
			// }
			// let men=new fac("嫦娥",19);
			// console.log(men.name);
			// 箭头函数不能用arguments数组(存形参的)
			function xc(a,b,c){
				console.log(arguments);
			}
			//xc(1,3,10);
			// let xc2=()=>{
			// 	console.log(arguments);
			// }
			// xc2(1,1,2); a
			//箭头函数的简写
			//只有一个形参时可省略括号
			let one=a=>{
				return a*a;
			}
			console.log(one(11));
			//语句只有一句可以省略括号,省略括号后必须省略return
			let two=(a,b)=> a+b;
			console.log(two(3,7));
			let three=a=>a+1;
			console.log(three(1));

练习

				width: 100px;
				height: 100px;
				background-color: cadetblue;
			}
		</style>
		<script>
			window.οnlοad=function(){
				let box1=document.getElementById("box");
				box1.addEventListener("click",function(){
					setTimeout(()=>{//延时器是window对象的方法,若用普通的回调this指向window,用箭头函数静态指向创建对象
					this.style.backgroundColor="pink";
					},2000);
				});
				let arry=[1,4,-2,3,10];
				let end=arry.filter(arry=>arry%2===0);//filter是数组的过滤器,里面写回调函数,参数一般为数组的名字,结果为真则返回
				console.log(end);
				arry.sort(function(a,b){
					return a-b;
				})
				console.log(arry);
			}	

(五)set方法

			s1.add(11).delete(2);//向set中添加和删除
			
			const arr=[...s1];//运用拓展运算符转化为数组
			// console.log(arr);
			//s1.forEach(value=>console.log(value));
			
			for(let item of s1.values()){
				console.log(item);//这三种方法效果一样
			}
			//运用set给数组去重
			let arr1=[1,1,23,1,23,12];
			let set1=new Set(arr1);
			let arr2=[...set1];//...拓展运算符有点类似于解构赋值,arr实际存的是该内容的地址
			let arr3=Array.from(set1);//Array.from可以将set的转化数组,这是申请了与上一个变量不同的内存,故地址与上一个变量不同;
			console.log(arr2===arr3);//false,引用型类型存的是指向连续的存储单位的地址,两者虽然内容一致,但指向的地址不同,导致===false
			console.log(arr2);//{"0":1,"1":23,"2":12,"length":3}
			console.log(arr3);//{"0":1,"1":23,"2":12,"length":3}
			//set中包含keys,values,entries(键值对),直接从set取值默认keys;
	

(六) map方法

			var newarr=arr.map((value,index,arr)=>{//map默认参数为键值,键名,整个数组对象;里面放回调函数
				console.log(value);
				console.log(index);
				console.log(arr);
			});
			//可支持数组数据类型转化
			let newarr1=arr.map(String);
			console.log(newarr1);
			//改变值
			let list=[
				{name:"猪八戒",age:"10"},
				{name:"孙悟空",age:"11"},
				{name:"唐僧",age:"21"}
			];
			let newarry=list.map(obj=>{
				return {
					name:obj.name,
					birthYear:new Date().getFullYear()-obj.age,
				}
			});
			console.log(newarry);
			//
			console.log(arr.constructor===Array);

(七)生成器和迭代器

			// function* scq(){
			// 	console.log("第一步");
			// 	yield "a";//使用字母时一定记得用引号,没有引号会当作变量;
			// 	console.log("第二步");
			// 	yield "b";
			// 	console.log("第三步");
			// 	yield "c";
			// }
			// let sc=scq();
			// console.log(sc.next());
			// console.log(sc.next());
			// console.log(sc.next());
			// console.log(sc.next());
			//迭代器iterater
		//  function grammar() {
		//   let arr = [4, 2, 1];
		//   let iterator = arr[Symbol.iterator]();
		//   let res = iterator.next();
		//   while(!res.done) {
		//     let value = res.value;
		//     console.log(value);
		//     res = iterator.next();
		//   }
		// 	console.log('结束')
		// }
		
			\\迭代器
				function g(){
			let arr1 =[1,2,3];
			let iterato=arr1[Symbol.iterator]();
			let res1=iterato.next();
			while(!res1.done){
				let va=res1.value;
				console.log(va);
				res1=iterato.next();
			}
			console.log("迭代结束");
		}
		// grammar(); //4,2,1

			g();

二、异步函数promise和asycn

(一)promise

			// 	setTimeout(function(){
			// 		console.log("读取数据库数据中");
			// 		resolve("余额为零");
			// 	},2000);
			// });
			// function newpromise1(){
			// 	let p=new Promise(function(resolve,reject){
			// 		setTimeout(function(){
			// 			let sj=Math.ceil(Math.random()*20);
					
			// 			if(sj>1){
			// 				resolve(sj);
			// 			}
			// 			else{
			// 				reject("数字小于10");
			// 			}
			// 		},1000);
					
			// 	});
			// 	return p;
			// }
			// function newpromise2(){
			// 	let p=new Promise(function(resolve,reject){
			// 		setTimeout(function(){
			// 			let sj=Math.ceil(Math.random()*20);
						
			// 			if(sj>1){
			// 				resolve(sj);
			// 			}
			// 			else{
			// 				reject("数字小于10");
			// 			}
			// 		},1000);
					
			// 	});
			// 	return p;
			// }
			// function newpromise3(){
			// 	let p=new Promise(function(resolve,reject){
			// 		setTimeout(function(){
			// 			let sj=Math.ceil(Math.random()*20);
						
			// 			if(sj>1){
			// 				resolve(sj);
			// 			}
			// 			else{
			// 				reject("数字小于10");
			// 			}
			// 		},1000);
					
			// 	});
			// 	return p;
			// }
			// newpromise().then(function(data){
			// 	console.log("resolve成功执行:",data);
			// }).catch(function(reason){
			// 	console.log("数据不符合要求",reason);
			// });
			//数组里的promise都执行成功才能返回数组;
			// Promise.all([newpromise1(),newpromise2(),newpromise3()]).then(function(result){
			// 	console.log(result);
			// });
		//
	    function requestTableList(){
	        var p = new Promise((resolve, reject) => {
	               //去后台请求数据,这里可以是ajax,可以是axios,可以是fetch 
	                resolve("res");
	        });
	        return p;
	    }
		//race报错机制
		function timeout(){
		          var p = new Promise((resolve, reject) => {
		              setTimeout(() => {
		                  reject('请求超时');
		              }, 10000);
		          });
		          return p;
		      }
	   Promise.race([requestTableList(),timeout()]).then((data)=>{console.log(data);}).catch((error)=>{console.log(error);});

(二)asncy

   			console.log("3s已经执行");
   			return new Promise(resolve=>{
   				setTimeout(function(){
   					resolve('3s');
   					console.log("3s执行完成");
   				},3000);
   			});
   		}
   		function active7s(){
   			console.log("7s已经执行");
   			return new Promise(resolve=>{
   				setTimeout(function(){
   					resolve("7s");
   					console.log("7s执行完成");
   				},7000);
   			});
   		}
   		async function worker(){
   			console.log("run")
   			const task= await active3s();//3秒后才执行
   			console.log(task);
   			const task2=await active7s();//等上一个任务完全执行完后在等7s,await改变原来同步>微任务>宏任务的顺序,将加关键字的语句先执行,而不是挂起;
   			console.log(task2);
   		}
   		worker();
		目前作为新生我也只学到这里,后续会更新。
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学徒在修行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值