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!');
浙公网安备 33010602011771号