怎么理解ES6对象
导读:本文共2786.5字符,通常情况下阅读需要9分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:对象字面量属性的简洁表示法ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值。constage=12;constname="Amy";constperson={age,name};person//{age:12,name:"Amy"}//等同于constperson={age:age,name:name}方法名也可以简写const... ...
目录
(为您整理了一些要点),点击可以直达。对象字面量
属性的简洁表示法
ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值。
方法名也可以简写
如果是Generator 函数,则要在前面加一个星号:
属性名表达式
ES6允许用表达式作为属性名,但是一定要将表达式放在方括号内。
注意点:属性的简洁表示法和属性名表达式不能同时使用,否则会报错。
对象的拓展运算符
拓展运算符(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象。
基本用法
可用于合并两个对象
注意点
自定义的属性和拓展运算符对象里面属性的相同的时候:自定义的属性在拓展运算符后面,则拓展运算符对象内部同名的属性将被覆盖掉。
自定义的属性在拓展运算度前面,则变成设置新对象默认属性值。
拓展运算符后面是空对象,没有任何效果也不会报错。
拓展运算符后面是null或者undefined,没有效果也不会报错。
对象的新方法
Object.assign(target, source_1, ···)
用于将源对象的所有可枚举属性复制到目标对象中。
基本用法
如果目标对象和源对象有同名属性,或者多个源对象有同名属性,则后面的属性会覆盖前面的属性。
如果该函数只有一个参数,当参数为对象时,直接返回该对象;当参数不是对象时,会先将参数转为对象然后返回。
Object.assign(3); // Number {3}
typeof Object.assign(3); // "object"
因为 null 和 undefined 不能转化为对象,所以会报错:
Object.assign(undefined,{a:1});//TypeError:Cannotconvertundefinedornulltoobject
注意点
assign 的属性拷贝是浅拷贝:
同名属性替换
数组的处理
会将数组处理成对象,所以先将 [2,3] 转为 {0:2,1:3} ,然后再进行属性复制,所以源对象的 0 号属性覆盖了目标对象的 0。
Object.is(value1, value2)
用来比较两个值是否严格相等,与(===)基本类似。
基本用法
与(===)的区别
怎么理解ES6对象的详细内容,希望对您有所帮助,信息来源于网络。