ES6总结--第二部分

数组:
	ES5里面新增一些东西

	循环:
		1. for
			for(let i=0; i<arr.length; i++)
		2. while

	arr.forEach()  //  代替普通for
		arr.forEach(function(val, index, arr){
		    console.log(val, index, arr);
		});
	arr.map()  //  非常有用,做数据交互  "映射"
		正常情况下,需要配合return,返回是一个新的数组
		若是没有return,相当于forEach

		注意:平时只要用map,一定是要有return
		
		重新整理数据结构:
			[{title:'aaa'}]   ->  [{t:'aaaa'}]

	arr.filter():  过滤,过滤一些不合格“元素”, 如果回调函数返回true,就留下来
		
	arr.some(): 类似查找,  数组里面某一个元素符合条件,返回true
	arr.every(): 数组里面所有的元素都要符合条件,才返回true

	其实他们可以接收两个参数:
		arr.forEach/map...(循环回调函数, this指向谁);
	------------------------------------------------------------
	arr.reduce()   //从左往右
		求数组的和、阶乘
		
	arr.reduceRight()  //从右往左
	------------------------------------------------------------	

ES2017新增一个运算符:
	幂
		Math.pow(2,3)
		2 ** 3
======================================================
for....of....:
	arr.keys()	数组下标
	arr.entries()	数组某一项

	for(let val of arr){
	    console.log(val);
	}
======================================================
扩展运算符:
	...

	let arr =[1,2,3];
	let arr2 = [...arr];

	let arr2 = Array.from(arr);

Array.from:
	作用: 把类数组(获取一组元素、arguments...) 对象转成数组

	个人观点: 具备 length这个东西,就靠谱

Array.of():  把一组值,转成数组
	let arr = Array.of('apple','banana','orange');

	console.log(arr);

arr.find():  查找,找出第一个符合条件的数组成员,如果没有找到,返回undefined

arr.findIndex(): 找的是位置, 没找到返回-1


arr.fill()	填充
	arr.fill(填充的东西, 开始位置, 结束位置);

在ES2016里面新增:

	arr.indexOf()
	arr.includes()
		str.includes()
============================================
对象:
	json

	对象简介语法(相当有用):

	let json ={
		a:1,
		b:2,
		showA:function(){
			return this.a;
		}
		showB:function(){
			return this.b;
		}
	}

	let json ={
		a,
		b,
		showA(){  //个人建议: 一定注意,不要用箭头函数
		},
		showB(){
		}
	}


	new Vuex.Store({
		state,
		mutation,
		types,
		actions
	});

	new Vue({
		router,
		App,
		vuex
	})

Object.is():	用来比较两个值是否相等

	Object.is('a','a');

	比较两个东西相等:
		==
		===

	Object.is(NaN, NaN);

	Object.is(+0, -0);

Object.assign():   用来合并对象
	let 新的对象 = Object.assign(目标对象, source1, srouce2....)

	function ajax(options){  //用户传
		let defaults={
			type:'get',
			header:
			data:{}
			....
		};

		let json = Object.assign({}, defaults, options);
		.....
	}
	

	用途:
		1. 复制一个对象
		2. 合并参数

ES2017引入:
	Object.keys()
	Object.entries();
	Object.values();

		let {keys, values, entries} = Object;let {keys, values, entries} = Object;

对象身上:   计划在ES2018引入
	...

	let json = {a:3, b:4};
        	let json2 = {...json};

==================================================
Promise:    承诺,许诺

	作用:  解决异步回调问题

	传统方式,大部分用回调函数,事件

	ajax(url,{  //获取token
		ajax(url,()=>{  //获取用户信息
			ajax(url, ()=>{
				//获取用户相关新闻
			})
		})
	})

	语法:
		let promise = new Promise(function(resolve, reject){
		    //resolve,   成功调用
		    //reject     失败调用
		});

		promise.then(res=>{

		}, err=>{
			
		})


	promise.catch(err=>{})

	本人用法:
		new Promise().then(res=>{

		}).catch(err=>{
			
		})

	Promise.resolve('aa') :  将现有的东西,转成一个promise对象, resolve状态,成功状态
		等价于:
		new Promise(resolve =>{
		    resolve('aaa')
		});
	Promise.reject('aaa'):   将现有的东西,转成一个promise对象,reject状态,失败状态
		等价于:
		new Promise((resolve, reject) =>{
		    reject('aaa')
		});

√	Promise.all([p1, p2, p3]):  把promise打包,扔到一个数组里面,打包完还是一个promise对象
		必须确保,所有的promise对象,都是resolve状态,都是成功状态
	Promise.race([p1, p2, p3]): 只要有一个成功,就返回

	用户登录  ->  用户信息
=========================================
模块化:
	js不支持模块化
		ruby   require
		python  import
	
	在ES6之前,社区制定一套模块规范:
		Commonjs		主要服务端  nodeJs    require('http')
		AMD			requireJs, curlJs
		CMD			seaJs

	ES6出来,同意服务端和客户端模块规范:
		import {xx} ddd
		
		Math.pow()
		Math.abs()

		import {pow, abs} from 'Math'		我自己瞎想


	模块化:
		注意: 需要放到服务器环境
		a). 如何定义模块?
			export  东西
			export const a =12;
			export{
				a as aaa,
				b as banana
			}
		b). 如何使用?
			import
			import './modules/1.js'; 
			import {a as a, banana, c} from './modules/2.js'
			import * as modTwo from './modules/2.js';
	使用模块:
		<script type="module"></script>


	import:  特点
		a). import 可以是相对路径,也可以是绝对路径
			import 'https://code.jquery.com/jquery-3.3.1.js';
		b). import模块只会导入一次,无论你引入多少次
		c). import './modules/1.js';  如果这么用,相当于引入文件
		d). 有提升效果,import会自动提升到顶部,首先执行
		e). 导出去模块内容,如果里面有定时器更改,外面也会改动,不想Common规范缓存


  	* import()  类似node里面require, 可以动态引入, 默认import语法不能写到if之类里面
		返回值,是个promise对象

		import('./modules/1.js').then(res=>{
			console.log(res.a+res.b);
		});

		优点:
			1. 按需加载
			2. 可以写if中
			3. 路径也可以动态

		Promise.all([])
	=============================================
	ES2017加  async  await:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值