ES6

对象拓展

   Object.is():ES5比较两个值是否相等只有两个运算符(==,===) ==:会自动转换数据类型  ===:NaN不等于自身。ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题,与严格比较运算符基本一致. 比较两个值是否严格相等

+0 === -0  //true
NaN === NaN //false

Object.is(+0, -0) //false
Object.is(NaN, NaN) ; //true

Object.assign(浅拷贝)--如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。

 

Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。

Object.assign方法的第一个参数是目标对象,后面的参数都是源对象

 

const target = { a: 1, b: 1 };

const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}

如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

//报错情况
Object.assign(undefined) // 报错
Object.assign(null) // 报错
//如果undefined不在assign的首位则不会报错
let obj = {a: 1};
Object.assign(obj, undefined) === obj // true Object.assign(obj, null) === obj // true

Set的应用场景

1、数组去重

let s = new Set();
[1,2,3,2,1].forEach( (s) => s.add(x))
s//123

2、字符串去重

let strSet = new Set('abba').join(''); //ab

属性和方法

  属性

  • Set.prototype.constructor:构造函数,默认就是Set函数。
  • Set.prototype.size:返回Set实例的成员总数

  方法:

  • Set.prototype.add(value):添加某个值,返回 Set 结构本身。
  • Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
  • Set.prototype.clear():清除所有成员,没有返回值。

遍历方法:

1、forEach---》数组

[1,2,3,2].forEach(x=>{console.log(x)})

2、map、filter

let set = new Set([1, 2, 3]);
set = new Set([...set].map(x => x * 2));
// 返回Set结构:{2, 4, 6}

let set = new Set([1, 2, 3, 4, 5]);
set = new Set([...set].filter(x => (x % 2) == 0));
// 返回Set结构:{2, 4}

Promise(异步回调)

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大

//Promise 新建后就会立即执行
let promise = new Promise(function(resolve, reject) { console.log('Promise'); resolve(); }); promise.then(function() { console.log('resolved.'); }); console.log('Hi!');

 

 

 

 

 

 

posted on 2019-12-05 16:31  copy&done  阅读(353)  评论(0)    收藏  举报