ES6 允许 直接写入变量和函数作为对象的属性和方法。
1、对象属性的简写
*允许在对象中只写属性名不写属性值,属性值等于属性名所代表的变量。
var foo='123'
var bar={ foo } => var bar={ foo:foo } => var bar={ foo:'123' }
@2
function(x,y){
return {x,y}
}
=>
function(x,y){
return {x:x,y:y}
}
2、对象方法的简写
//ES6
var o={
methods(){
return alert('hello')
}
}
//ES5
var o={
methods:function(){
return alert('hello')
}
}
3、Object.is()
概念:Object.is()用来比较两个值是否严格相等,类似与“===”
Object.js('foo','foo') //true
Object.js({},{}) //false
与“===”的区别:
Object.js('+0,-0) //false +0不等于-0
Object.js(NaN,NaN) //true NaN等于自身
4、Object.assign()
概念:Object.assign()方法用来将 源对象(source)的 所有可枚举属性 复制到 目标对象(target)
( 其实就是拷贝)。
用法:
Object.assign(target,source)
至少需要两个参数,第一个参数是目标对象,第二个是源对象。
var target={a:1}
var source={b:2}
var source1={c:3}
Object.assign(target,source,source1)
target ={a:1,b:2,c:3}
*如果目标对象与源对象有同名属性,或多个源对象有同名属性,后面的属性会覆盖前面的属性。
var target={a:1,b:1}
var source={b:2,c:2}
var source1={c:3}
Object.assign(target,source,source1)
target ={a:1,b:2,c:3}
Object.assign()是一个很有用的扩展方法。它有很多适用场景,比如:
1.为对象添加属性
2为对象添加方法
function foo(){console.log(2)}
Object.assign(foo,{
somethings(){
console.log(1)
}
})
3.克隆对象(浅拷贝)
function clone(obj){
return Object.assign({},obj)
}
也等同与
let test={...obj}
4.合并多个对象
const foo= (...objs) => Object.assign({},...objs)
5.*为属性指定默认值
let DEFAULTS={name:0,age:2}
function foo(params){
let params=Object.assign({},DEFAULTS,params)
}
当然也可以直接设置默认值
function foo(name=0,age=2}){
let params=Object.assign({},DEFAULTS,params)
}