1.属性的简洁表示:
// ES5定义对象属性时:
let name = 'jianshu';
let age = 18;
let obj1 = {
name:name,
age:age
}
//ES6中如果key和value的值是一样的,可以直接写成:
let obj2 = {
name,
age
}
console.log(obj1,obj2)        //  {name: "jianshu", age: 18}   {name: "jianshu", age: 18}  //结果相同
2.属性名表达式:
若有需求需要将对象中key设置为变量,则可以用中括号包裹变量的方式 [key] 来表达,例:
let s = 'company'
let obj = {
name,
age,
[s]:'简书'
}
console.log(obj)        //{name: "jianshu", age: 18, company: "简书"}
3.Object.is(data1,data2) 判断
//Object.is()的作用其实与'==='类似,都是判断,例:
console.log(Object.is(1,'1'))  //false
// Object.is()与 '==='的异同
Object(NaN,NaN) 判断结果为true
NaN == NaN 判断结果为false
4.拓展运算符与assign()对对象的拷贝与合并:
// let obj1 = {
// a:1,
// b:2
// }
// let obj2 ={
// c:3,
// d:4
// }
// let obj3 = {...obj1,...obj2}
// let obj4 = Object.assign(obj1,obj2)  {a:1,b:2,c:3,b:4}
// console.log(obj3,obj4)
// 注意:若合并对象有相同的属性,则后拷贝对象的属性会覆盖前一个拷贝对象的属性:
// 例:
// let obj1 = {
         a: 1,
         b: 2
         }
 let obj2 = {
         b: 3,
         c: 4
         }
 let obj3 = { ...obj1,...obj2} //{a: 1, b: 3, c: 4}
 let obj4 = Object.assign(obj1, obj2) //{a: 1, b: 3, c: 4}
// 需注意的是拓展运算符对浅层的基本数据类型都可以实现深拷贝,拷贝后的对象与原对象互不影响,但是,对于复杂数据类型,比如对象内再套对象,数组,这些数据,无法实现深拷贝,故,该方法不适用于复杂对象的拷贝,
例:
 let obj1 = {
         a:1,
         b:{
                 f:2
             }
             }
 let obj2 = {
        c:3,
         d:4
         }
 let obj3 = {...obj1,...obj2}
 obj1.a = 5;
 obj1.b.f = 8;
 console.log(obj1)          //{a: 5, b:{f:8}}      可发现我们对obj1做的更改都已经成功
 console.log(obj3)          //{a: 1,b: {f: 8},c: 3,d: 4}     第一层的a值的修改并未影响obj3中的a的值,但是b中的f跟随obj1的修改做了修改
而assign()的拷贝,也存在以下问题
 let obj1 = {
         a:1,
         b:2,
         c:{
            d:5,
             h:12,
             e:{
                 f:6,
                 g:7
                 }
              }
         }
 let obj2 = {
         a:1,
         b:2,
         c:{
             e:{
                f:8,
                 g:9
                 }
             }
         }
 let obj3 = Object.assign(obj1,obj2)
// console.log(obj3)  //{a: 1,b: 2,c:e:{f: 8,g: 9}}  输出结果中,objc3拷贝自原obj1中c下面的d跟h消失了,也就是说,obj2,覆盖了obj1