js-es6-对象扩展
2017-10-03 22:36
429 查看
更简洁的表示法
属性表达式
方法的name属性
函数的name属性,返回函数名。对象方法也是函数,因此也有name属性
扩展运算符
Object新增的方法
Object.is()用来比较两个值是否严格相等。它与严格比较运算符(===)的行为基本一致,不同之外只有两个:一是+0不等于-0,二是NaN等于自身。
如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
Object.assign只拷贝自身属性,不可枚举的属性(enumerable为false)和继承的属性不会被拷贝。
属性名为Symbol值的属性,也会被Object.assign拷贝。
对于嵌套的对象,Object.assign的处理方法是替换,而不是添加。
Object.entries() 遍历对象
let a=1; let obj={a}; console.log(obj)//{a: 1}
const obj={ fn:function(){ console.log('old'); }, fn2(){ console.log('new'); } } obj.fn();//old obj.fn2();//new
属性表达式
let a='b'; let obj={ [a]:'c' } console.log(obj);//{b: "c"}
方法的name属性
函数的name属性,返回函数名。对象方法也是函数,因此也有name属性
let person = { sayName: function() { console.log(this.name); } } let s1 = person.sayName.name; // "sayName" console.log(s1);
扩展运算符
let {a,b,...c}={a:'test',b:'haha',c:'ccc',d:'ddd'}; console.log(a);//test console.log(b);//haha console.log(c);//{c: "ccc", d: "ddd"}
Object新增的方法
Object.is()用来比较两个值是否严格相等。它与严格比较运算符(===)的行为基本一致,不同之外只有两个:一是+0不等于-0,二是NaN等于自身。
console.log(Object.is(NaN,NaN));//true console.log(Object.is(+0,-0));//falseObject.assign()用来将源对象(source)的所有可枚举属性,复制到目标对象(target)。它至少需要两个对象作为参数,第一个参数是目标对象,后面的参数都是源对象。只要有一个参数不是对象,就会抛出TypeError错误 (浅拷贝)
var obj1={}; var obj2={a:'1'}; var obj3={b:'2'}; Object.assign(obj1,obj2,obj3); console.log(obj1);//{a: "1", b: "2"}
如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
var target1 = { a: 1, b: 1 }; var source1 = { b: 2, c: 2 }; var source2 = { c: 3 }; Object.assign(target1, source1, source2); console.log(target1);//{a: 1, b: 2, c: 3}
Object.assign只拷贝自身属性,不可枚举的属性(enumerable为false)和继承的属性不会被拷贝。
属性名为Symbol值的属性,也会被Object.assign拷贝。
对于嵌套的对象,Object.assign的处理方法是替换,而不是添加。
var target = { a: { b: 'c', d: 'e' } } var source = { a: { b: 'hello' } } Object.assign(target, source); console.log(target);// { a: { b: 'hello' } } console.log(Object.assign([1, 2, 3], [4, 5])); // [4,5,3]
Object.entries() 遍历对象
let obj={ name:'haha', age:20 } for(let [key,value] of Object.entries(obj)){ console.log([key,value]); // ["name", "haha"] // ["age", 20] }
相关文章推荐
- [js高手之路] es6系列教程 - 对象功能扩展详解
- [js高手之路] es6系列教程 - 对象功能扩展详解
- ES6(对象扩展)
- ES6系列之---对象的扩展函数
- es6入门-对象的扩展
- ES6对象扩展
- 扩展js中对象的方法
- es6 javascript对象的扩展运算符
- ES6——对象扩展
- ES6-对象的扩展-Object.keys(),Object.values(),Object.entries()
- JS模块化编程(五)---按照AMD规范扩展全局对象
- ES6-对象的扩展-属性的可枚举性和遍历
- es6对象扩展(七)
- ES6 --- 对象扩展
- webkit的js对象扩展(一)——binding方式创建自定义对象(单实例)
- JS:收集的一些Array及String原型对象的扩展实现代码
- ES6(vue)对象词法扩展
- ES6对象的扩展
- js对象深拷贝和对象扩展
- 【读书笔记】【深入理解ES6】#4-扩展对象的功能性