Object.is()
比较两个值是否相等
它用来比较俩个值是否严格相等,与严格运算符(===) 的行为基本一致。
Object.is('foo','foo') // true
Object.is({},{}) // false
上面代码中两个空对象不相等,因为它们的引用地址不同。
不同之处只有两个: 一是 +0 不等于 -0 , 二是 NaN 等于自身
// Es5写法
+0 === -0 // true
NaN === NaN //false
//Es6提出的新算法方法
Object.is(+0,-0) //false
Object.is(NaN,NaN) // true
Object.freeze()
该方法可以冻结一个对象,冻结对象指的是不能向这个对象,添加属性、删除属性、修改属性、以及不能修改该对象已有属性的可枚举型、可写性、可配置性,该方法返回被冻结的对象。
var json = {
name:'秦司令'
};
var obj = Object.freeze(json);
obj.age = 20; // 不生效
obj.name = 'abc'; //不生效
delete obj.name // 不生效
console.log(obj.name); //秦司令
console.log(obj.age) // undefined
对象的解构
// const people = {
// name: 'cs',
// age: 25
// }
// const { name, age } = people;
// console.log(name,age);//cs 25
数组的解构
// const names = ["Henry","Bucky","Emily"];
// const [name1,name2,name3] = names;
// console.log(name1,name2,name3);//Henry Bucky Emily
// //返回数组个数
// const {length} = names;
// console.log(length); //3
提供对象合并
// const obj1 = {
// a: 1
// }
// const obj = Object.assign({c: 2}, obj1)
// console.log(obj);//{a:1,c:2}
扩展运算符…
// const arr1 = [1,2,3]
// const arr2 = [4,5,6]
// const arr3=[...arr1,...arr2]
// console.log(arr3) //[1, 2, 3, 4, 5, 6]
// const arr = [1,2,3]
// const arr1 = [...arr, 4, 5, 6];
// console.log(arr1);//[1, 2, 3, 4, 5, 6]
字符串转数组
// var str = 'love';
// var arr = [...str];
// console.log(arr);//[ 'l', 'o', 'v', 'e' ]
rest参数…
// 作用与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组
// rest参数,返回的是一个对象
// const obj = {a: 2, b: 3, c: 4, d: 5};
// const {a, ...rest} = obj; // 2 { b: 3, c: 4, d: 5 }
// console.log(a);
// console.log(rest);