对象的扩展
ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
ES6允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。
let name ='tom'
let age =12
let obj = {
name,
age
}
console.log(obj) //{name:'tom',age:12}
let propKey ='foo';
let obj ={[propKey]:true,['a'+'bc']:123};
console.log(obj) //{foo:true,abc:123}
函数的name属性,返回函数名。在下面的代码中,获取的变量的值作属性名。
let text='hello'
let obj ={
age:12,
text,
[text]:123
}
console.log(obj) // { age: 12, text: 'hello', hello: 123 }
1) Object.is() 用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
let a =10
let b =20
console.log(Object.is(a,b)); //false
console.log(a===b) //false
不同之处只有两个:一是+0
不等于-0
,二是NaN
等于自身。
let a =-0
let b =+0
console.log(Object.is(a,b)); //false
console.log(a===b) //true
let a =NaN
let b =NaN
console.log(Object.is(a,b)); //true
console.log(a===b) //false
console.log(a==b) //false
2) Object.assign(target,o1,o2…) 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
let a ={age:12}
let b ={age:14,name:'tom'}
let c={
text(){
}
}
let target ={}
Object.assign(target,a,b,c)
console.log(target) //{ age: 14, name: 'to