ES6对象的扩展

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)
}


                                  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 属性的简介表示法 varfoo ='bar'; varbaz = {foo}; baz//{foo: "ba...
    ningluo阅读 296评论 0 0
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 1,170评论 0 3
  • 1.属性的简洁标识方法 1)属性简写 var foo = ‘bar’; var baz = {foo}; baz ...
    _花阅读 154评论 0 1
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 1,591评论 0 8
  • 1.属性的简介表示法 const foo ='bar' const baz = {foo} baz //{foo:...
    yfsola阅读 237评论 0 0