阅读量:1
1. 属性的简洁表示(Property Shorthand)
特性:在对象字面量中,如果属性名和变量名相同,可以省略属性名,直接使用变量值。
用法:简化对象字面量的书写。
const x = 1, y = 2; const obj = { x, y }; console.log(obj); // 输出:{ x: 1, y: 2 }
2. 方法定义的改进(Method Definitions)
特性:在对象字面量中,可以直接使用方法定义,而不需要使用 function 关键字。
用法:简化对象中方法的书写。
const obj = { sayHello() { console.log('Hello!'); } }; obj.sayHello(); // 输出:Hello!
3. 计算属性名(Computed Property Names)
特性:使用方括号[]可以在对象字面量中动态地指定属性名。
用法:当属性名不是静态字符串时使用。
const key = 'a'; const obj = { [key]: 'value', ['b']: 2 }; console.log(obj); // 输出:{ a: 'value', b: 2 }
4. Symbol 作为属性名
特性:可以使用 Symbol 作为对象的属性名。
用法:创建唯一的属性名,避免属性名冲突。
const mySymbol = Symbol('mySymbol'); const obj = { [mySymbol]: 'This is a symbol property' }; console.log(obj[mySymbol]); // 输出:This is a symbol property
5. Object.is() 静态方法
特性:比较两个值是否相同,比 === 更严格,会考虑 NaN 和 -0。
用法:进行精确的值比较。
console.log(Object.is(NaN, NaN)); // 输出:true console.log(NaN === NaN); // 输出:false console.log(Object.is(-0, -0)); // 输出:true console.log(-0 === 0); // 输出:true
6. Object.assign() 方法
特性:复制对象中的属性到另一个对象。
用法:对象属性的合并。
const source = { a: 1 }; const target = { b: 2 }; Object.assign(target, source); console.log(target); // 输出:{ b: 2, a: 1 }
7. Object.getOwnPropertyDescriptors() 方法
特性:获取一个对象的所有属性描述符。
用法:获取对象属性的详细信息。
const obj = { writable: true }; Object.defineProperty(obj, 'readable', { value: true, writable: false }); console.log(Object.getOwnPropertyDescriptors(obj));
8. Object.setPrototypeOf() 方法
特性:设置一个对象的原型(即内部 [[Prototype]] 属性)。
用法:改变对象的原型。
const proto = {}; const obj = {}; Object.setPrototypeOf(obj, proto); console.log(Object.getPrototypeOf(obj) === proto); // 输出:true
9. Object.keys(), Object.values(), Object.entries()
特性:分别返回对象的键、值或键值对数组。
用法:遍历对象或获取对象的特定集合。
const obj = { a: 1, b: 2 }; console.log(Object.keys(obj)); // 输出:['a', 'b'] console.log(Object.values(obj)); // 输出:[1, 2] console.log(Object.entries(obj)); // 输出:[['a', 1], ['b', 2]]