多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 对象属性和方法的简洁表示法 - 在ES6中允许只写属性名,不写属性值,此时的属性值就是属性名对应的变量的值 ``` var birth = '2000/01/01' var person = { name:'张三', birth,//等同于 birth : birth hello(){console.log('hello world')} // 等同于 hello:function(){...} } ``` ### 新的对象API #### Object.is() - 判断两个值是否严格相等 - 场景:在ES5中NaN是不等于自身的,可以通过Object.is()来判断 ``` Object.is(+0,-0) //false 在ES5中两者相等 Object.is(NaN,NaN) //true ``` #### Object.assign(target,source1,source2) - 用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target) - 如果只有一个参数,则返回该参数 - undefined和null不能做为参数,因为它们不能转成对象(作为首参数报错,做为source参数无值) - Object.assign()是浅拷贝,而不是深拷贝。(即:如果源对象某个属性的值是对象,那目标对象拷贝得到的是这个对象的引用) - 当target和source有同名属性时,会替换,而不是添加 ``` var obj1 ={ name:'haha', age:18 } var obj2={} Object.assign(obj2,obj1) // Object.assign(target,source1,source2,...) # 浅拷贝 var obj1 ={a:{b:1}} var obj2 = Object.assign({},obj1) obj1.a.b=2; obj2.a.b // 2 # 合并多外对象 var merge = (...sources)=>Object.assign({},...sources) # 为类对象属性赋值 class Point{ constructor(x,y){ Object.assign(this,{x,y}) } } # 设置初始值 let options = Object.assign({},DEFAULTS,options) ``` > Object.assign的作用 1. 浅拷贝对象的属性和方法 2. 为类对象赋值 3. 设置对象属性指定默认值 4. 合并多个对象 5. 克隆对象 #### 对象的遍历方法 1. for...in > for...in 循环遍历对象自身的和继承的可枚举属性(不含Symbol属性) 2. Object.keys(obj) > Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性 3. Object.getOwnPropertyName(obj) > 返回一个数组,饮食对象所有属性 4. Object.getOwnPropertySymbols(obj) > 返回数组,饮食对象自身的所有Symbol属性 5. Reflect.ownKeys(obj) > 返回数组,饮食对象自身的所有属性(饮食Symbol属性和可枚举及不可枚举的) #### 对象属性获取API 1. Object.keys() > 返回key数组,获取对象的所有可遍历属性的键名, 2. Object.values() > 返回value数组,获取对象所有可遍历属性的值 3. Object.entries() > 返回[key,value]为元素的数组,获取对象所有可遍历属性的键值数组 #### Rest解构赋值 > ...运算符用于解构。对象的Rest解构赋值用于从一个对象取值,相当于将所有可遍历的、但尚未被读取的属性,分配到指定的对象上面。 > 注意点: - Rest解构赋值必须是最后一个参数,否则会报错 - 解构赋值是浅拷贝 - 不会拷贝继承自原型对象的属性