ES6 对对象进行了一些有益的扩展,引入了一些新特性以提高对象的处理和操作能力。以下是 ES6 中对象的一些扩展:

1. 属性的简洁表示法:

ES6 允许在对象字面量中使用简洁的语法定义属性,不再需要重复书写相同的属性名和变量名:
let name = "John";
let age = 25;

// ES6 简洁表示法
const person = { name, age };

2. 方法的简洁表示法:

ES6 允许在对象字面量中使用简洁的语法定义方法:
// ES6 简洁表示法
const person = {
    name: "John",
    sayHello() {
        console.log(`Hello, my name is ${this.name}.`);
    }
};

3. 计算属性名:

ES6 允许在对象字面量中使用计算属性名,可以根据变量动态地生成属性名:
let prop = "age";

const person = {
    name: "John",
    [prop]: 25
};

4. Object.is() 方法:

Object.is() 方法用于比较两个值是否严格相等,类似于 ===,但处理一些特殊情况,例如 NaN 和 -0:
console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(-0, 0));    // false

5. Object.assign() 方法:

Object.assign() 方法用于将一个或多个源对象的属性复制到目标对象,也可用于合并多个对象:
const target = { a: 1, b: 2 };
const source = { b: 3, c: 4 };

Object.assign(target, source);

console.log(target); // 输出:{ a: 1, b: 3, c: 4 }

6. Object.keys()、Object.values() 和 Object.entries() 方法:

这些方法分别用于获取对象的键、值和键值对:
const person = { name: "John", age: 25 };

console.log(Object.keys(person));   // 输出:['name', 'age']
console.log(Object.values(person)); // 输出:['John', 25]
console.log(Object.entries(person)); // 输出:[['name', 'John'], ['age', 25]]

7. Object.setPrototypeOf() 方法:

Object.setPrototypeOf() 方法用于设置对象的原型(prototype):
const cat = { meow() { console.log("Meow!"); } };
const kitten = { purr() { console.log("Purr!"); } };

Object.setPrototypeOf(kitten, cat);

kitten.meow(); // 输出:Meow!

这些 ES6 对象的扩展方法使得在处理对象时更为灵活和便捷。


转载请注明出处:http://www.zyzy.cn/article/detail/4670/ES6