ES6对象新增了哪些扩展?

ES6(ECMAScript 2015)为JavaScript中的对象引入了一些新的扩展功能。以下是一些主要的ES6对象扩展:

  1. 对象字面量的增强(Object Literal Enhancements): ES6允许在对象字面量中更简洁地定义属性和方法。您可以省略属性名称和冒号,如果属性名和变量名相同,可以直接使用变量名作为属性名。

const name = "Alice";
const age = 30;
const person = { name, age };
console.log(person); // 输出: { name: 'Alice', age: 30 }

 计算属性名(Computed Property Names): 您可以在对象字面量中使用表达式作为属性名,这使得属性名更灵活。

const key = "myKey";
const obj = {
  [key]: "myValue"
};
console.log(obj); // 输出: { myKey: 'myValue' }

 Object.assign() 方法Object.assign() 方法用于将一个或多个源对象的属性复制到目标对象。这是一种浅拷贝操作。

const target = { a: 1 };
const source = { b: 2 };
const result = Object.assign(target, source);
console.log(result); // 输出: { a: 1, b: 2 }

Symbol 数据类型: ES6引入了Symbol数据类型,它是一种唯一且不可改变的数据类型,可以用作对象属性的键。这有助于避免属性名冲突。

const mySymbol = Symbol("description");
const obj = {
  [mySymbol]: "This is a symbol property"
};
console.log(obj[mySymbol]); // 输出: This is a symbol property

Object.setPrototypeOf() 方法Object.setPrototypeOf() 方法用于设置对象的原型。

const child = Object.create(parent);
// 设置child对象的原型为parent
Object.setPrototypeOf(child, parent);

Object.getOwnPropertySymbols() 方法Object.getOwnPropertySymbols() 方法返回对象自身的所有Symbol属性。

const obj = {
  [Symbol("a")]: "value"
};
const symbols = Object.getOwnPropertySymbols(obj);
console.log(symbols); // 输出: [Symbol(a)]

Object.freeze() 和 Object.seal() 方法Object.freeze() 方法用于冻结对象,使其属性不可更改。Object.seal() 方法用于封闭对象,使其属性不可添加或删除。

const obj = { prop: "value" };
Object.freeze(obj);
obj.prop = "new value"; // 这里不会改变属性值,它仍然是"value"

这些是ES6中引入的一些主要对象扩展功能。它们增强了JavaScript中对象的灵活性和功能。

你可能感兴趣的:(javascript,面试,es6,前端,ecmascript)