美文网首页
ECMAScript 6 - 学习笔记 整理 -2

ECMAScript 6 - 学习笔记 整理 -2

作者: squidbrother | 来源:发表于2019-03-06 16:10 被阅读2次

注:
部分方法ES6语法有浏览器解析差异,所以暂且以了解为主

SET

//Set 本身是一个构造函数,用来生成 Set 数据结构

var s = new Set(['a','b','c']);

s.add('d')

s.add('d')

s.add('d')

s.add('NaN')

s.add('NaN')

console.log(s)  //["a", "b", "c", "d", "NaN" ] 不会添加重复值

s.delete('a');

console.log(s) //[ "b", "c", "d", "NaN" ]

console.log(s.has('b'))  //true

s.clear(); 

console.log(s) //[]

var s = new Set(['a','b','c']);

s.forEach(function(item,index,set){

console.log(item,index,set)  // set中item与索引值相同

})

var s = new Set(['a','b','c']);

var keys = s.keys();

console.log(keys); //{"a", "b", "c"} 谷歌浏览器在 版本 71.0.3578.98(正式版本) (64 位)

                  //{  } 在火狐浏览器下,为空  版本64.0.2

var s = new Set(['a','b','c']);

var values = s.values();

console.log(values); //{"a", "b", "c"} 谷歌浏览器在 版本 71.0.3578.98(正式版本) (64 位)

                  //{  } 在火狐浏览器下,为空  版本64.0.2
应用范围,利用其不添加重复项目的特点,

例如:数组去重

var arr = [1,2,3,4,5,6,7,3,2,3,4,NaN]

var s = new Set(arr); //Set构造出来的是对象,但是不是数组

//console.log(arr instanceof Array);

arr = [...s] //将对象转化为数组,通过数据结构的方式完成

console.log(arr);
Map
var obj1 = {a:1};

var obj2 = {b:2};

var m = new Map([['a','b']]);

console.log(m)

console.log(m.get('a')) //b

m.set('a',1);

console.log(m.get('a')) //1

//m.delete('a')

m.has('a')

console.log(m.has('a')) //true

//m.clear();

m.set('a',1);

m.set('b',2);

m.set('c',3);

console.log(m)

m.forEach(function(item,index,map){

console.log(item);

})

var keys = m.keys();

console.log(keys.next()) //遍历出键名

console.log(keys.next()) //遍历出键名

console.log(keys.next()) //遍历出键名

console.log(keys.next()) //遍历出键名

https://www.babeljs.cn

//---函数参数默认值

function add(a,b=10){

return a+b;

}
---箭头函数 (一种简洁的书写方式)
var add2 = function add2(a, b) {

  return a + b;    //如果语句不复杂可以继续简写

};

var add2 = (a,b) => a+b //如果语句为1句,且返回值

//如果想返回一个对象

var add2 = (a,b) => ({c:1}) 需要额外添加一个小括号,包裹

var add2 = (a,b) => ([1,2,3]) 返回的一个数组

var add2 = (a,b) =>{

  return a+b

}

//参数只有1个,则可以省略小括号

var add2 = a => a*200

//示例 数组筛选出大于20的项目

var arr = [1,5,151,5,15,35,40];

var result = arr.filter(function(item){

return item > 20;

})

console.log(result);  //[ 151, 35, 40 ]

简写

var arr = [1,5,151,5,15,35,40];

var result = arr.filter(item => item > 20)

console.log(result);

var fn = () =>{

console.log(this) // this不管函数调用方式,都指向window

console.log(arguments) //箭头函数不支持arguments

}

fn()

//不支持arguments可以使用剩余参数模拟

var fn = (...r) => {

console.log(r) //[ 1, 2, 3, 4 ]

}

fn(1,2,3,4)

var a = new fn(); //报错 fn is not a constructor  箭头函数无法使用new

promise
var p = new Promise((res,rej)=>{

//你的逻辑,判断返回值以及返回函数参数

//res,rej只会执行一个,且立即执行,PromiseStatus 里面有三个状态 等待,成功,失败(resolved,rejected)

res('成功'); // return res,rej看具体需求

})

//写法1

p.then((data)=>{

//promise执行后的调用回调函数

    console.log(data)

},()=>{

console.log('失败');

}) ///上面成功失败,也可写成另外一种方式

//写法2

p.then(()=>{

console.log('成功')

})

p.catch(()=>{

console.log('失败')

})

p.then(()=>{}) 是有返回值的,返回值还是promise

所以可以写成链式调用

p

.then(()={

console.log(1);

})  //then中再次调用函数中,成功失败取决于上一个函数返回值

.then(()={

console.log(2);

})

.catch((err)={

console.log(err)

})
JS文件之间的数据依赖,引入 module
//---javascript 外链引入 defer 属性

<script src='xxxxx' defer></script> //这个script标签会在其他没有defer属性的JS文件引入后,再执行

//---script模块化 (注:必须服务器环境下使用,否则报错)

<script src='xxxx' type='module' defer></script> //一旦使用module,默认增加defer属性

声明的变量,在模块内部是可以使用

从某路径下导入JS中的变量n

import {n,m} from 'xx/xx.js';

某JS文件中提供的对外接口

export {n,m};

//引入所有数据挂载在一个变量下

import * as tool from 'xxx/xxx.js';

console.log(tool.xx)

注:引入的变量是常量,无法修改,但是可以在常量导出文件内,可以对其添加方式,使其修改
----数组新增 方法
var arr = new Array(10,20,30);

var arr = Array.of(10,20,30);

var arr = Array.of(10); //创建一个数组,数组只有一项,值为10

var arr = new Array(10); //创建一个长度为10的数组

Array.isArray(arr); //判断是否为数组

var arr = Array.from(xxx) //将XXX转化为数组

arr.find(function(item){  //返回第一个符合的具体值

  return item > 50;

})

arr.findIndex(function(item){  //返回第一个符合的索引

  return item > 50;

})

----对象新增方法
Object.is(1,1) //true

Object.is(1,'1') //false

Object.is(NaN,NaN) //true  在ES5中 console.log(NaN === NaN) // false ,是很特殊的,ES6完善了这个判断方法

//-----对象默认值添加

var para = Object.assign(修改目标,设置值,默认值,新增项目);

例:

var para = {}

var ob1 = {a:1}

var ob2 = {a:55}

Object.assign(para,ob1,ob2,{b:2});

console.log(para); //{a: 55, b: 2}

相关文章

网友评论

      本文标题:ECMAScript 6 - 学习笔记 整理 -2

      本文链接:https://www.haomeiwen.com/subject/rnqxpqtx.html