ES6对JavaScript的对象方法进行了大量的扩展和优化,为开发者提供了更强大的工具来处理对象。以下是一些关键的Object方法及其应用实例: 1. **Object.is()** `Object.is()` 方法用于判断两个值是否完全相等,它考虑了NaN的特殊情况以及+0和-0的差异。与传统的`===`运算符不同,`Object.is()`在比较NaN时会返回true,而`===`则会返回false。此外,对于+0和-0,`Object.is()`也会区分它们。 ```javascript console.log(Object.is({},{}), {} === {}); // false, false console.log(Object.is(NaN,NaN), NaN === NaN); // true, false console.log(Object.is(+0,-0), +0 === -0); // false, true ``` 2. **Object.assign()** `Object.assign()` 方法用于合并或拷贝对象的属性。它将源对象的可枚举属性复制到目标对象,并且如果有多源对象,后面的属性会覆盖前面的同名属性。 ```javascript var obj = {}; var obj2 = Object.assign(obj,{name:'Joh'},{age:10}); console.log(obj === obj2, obj); // true, {name:'Joh', age:10} ``` 这个方法在处理默认选项或配置对象时非常有用,例如: ```javascript const DEFAULT_OPTIONS = { name:"Joh"}; function test(opts) { let options = Object.assign({}, DEFAULT_OPTIONS, opts); console.log(options); } test(); // {name: "Joh"} test({name:"Lily",age:10}); // {name: "Lily", age: 10} ``` 3. **Symbol属性拷贝** `Object.assign()` 也可以拷贝Symbol属性,即使这些属性是不可枚举的。 ```javascript var skey1 = Symbol('test'); var skey2 = Symbol('test'); var obj = {}; Object.assign(obj,{name:'Joh'},{age:10},{[skey1]: 'I am test1'},{[skey2]: 'I am test2'}); console.log(obj[skey1]); // I am test1 console.log(obj); // {name: "Joh", age: 10, Symbol(test): "I am test1", Symbol(test): "I am test2"} ``` 4. **Object.keys(), Object.getOwnPropertyNames(), Object.getOwnPropertySymbols()** 这些方法用于获取对象的属性信息。 - `Object.keys()` 返回对象自身的所有可枚举属性的数组,不包括原型链上的属性和Symbol属性。 - `Object.getOwnPropertyNames()` 类似,但返回的是对象的所有可枚举属性(包括不可枚举但非Symbol的属性)。 - `Object.getOwnPropertySymbols()` 返回对象的所有Symbol属性。 ```javascript class A { constructor() { this.name = 'Joh'; } [Symbol('fullnameA')] () { } getName() { }} class B extends A { constructor() { super(); this.age = 22; } [Symbol('fullnameB')] () { } getAge() { }} B.prototype.getColor = function () {}; var b = new B(); console.log(Object.keys(b)); // ["name", "age"] console.log(Object.getOwnPropertyNames(b)); // ["name", "age"] console.log(Object.keys(B.prototype)); // ["getColor"] console.log(Object.getOwnPropertyNames(B.prototype)); // ["constructor", "getColor", "getAge"] ``` 5. **Object.getOwnPropertyDescriptor()** 这个方法返回指定对象上一个属性的描述符,包括属性的可枚举性、可写性和值。这对于查看和修改对象的属性特性非常有用。 ```javascript const descriptor = Object.getOwnPropertyDescriptor(B.prototype, 'getAge'); console.log(descriptor); ``` ES6中的这些Object方法极大地增强了我们处理和操作JavaScript对象的能力,使代码更加灵活和可维护。通过熟练掌握这些方法,开发者能够编写出更高效、更健壮的代码。
- 粉丝: 8
- 资源: 879
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助