ES6 对象的扩展(十五)

1. 属性的简洁表示(Property Shorthand)

特性 :在对象字面量中,如果属性名和变量名相同,可以省略属性名,直接使用变量值。
用法:简化对象字面量的书写。

javascript 复制代码
const x = 1, y = 2;
const obj = { x, y };
console.log(obj); // 输出:{ x: 1, y: 2 }

2. 方法定义的改进(Method Definitions)

性:在对象字面量中,可以直接使用方法定义,而不需要使用 function 关键字。
用法:简化对象中方法的书写。

javascript 复制代码
const obj = {
  sayHello() {
    console.log('Hello!');
  }
};

obj.sayHello(); // 输出:Hello!

3. 计算属性名(Computed Property Names)

特性 :使用方括号[]可以在对象字面量中动态地指定属性名。
用法:当属性名不是静态字符串时使用。

javascript 复制代码
const key = 'a';
const obj = {
  [key]: 'value',
  ['b']: 2
};
console.log(obj); // 输出:{ a: 'value', b: 2 }

4. Symbol 作为属性名

特性 :可以使用 Symbol 作为对象的属性名。
用法:创建唯一的属性名,避免属性名冲突。

javascript 复制代码
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。
用法:进行精确的值比较。

javascript 复制代码
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() 方法

特性 :复制对象中的属性到另一个对象。
用法:对象属性的合并。

javascript 复制代码
const source = { a: 1 };
const target = { b: 2 };
Object.assign(target, source);
console.log(target); // 输出:{ b: 2, a: 1 }

7. Object.getOwnPropertyDescriptors() 方法

特性 :获取一个对象的所有属性描述符。
用法:获取对象属性的详细信息。

javascript 复制代码
const obj = { writable: true };
Object.defineProperty(obj, 'readable', {
  value: true,
  writable: false
});
console.log(Object.getOwnPropertyDescriptors(obj));

8. Object.setPrototypeOf() 方法

特性 :设置一个对象的原型(即内部 [[Prototype]] 属性)。
用法:改变对象的原型。

javascript 复制代码
const proto = {};
const obj = {};
Object.setPrototypeOf(obj, proto);
console.log(Object.getPrototypeOf(obj) === proto); // 输出:true

9. Object.keys(), Object.values(), Object.entries()

特性 :分别返回对象的键、值或键值对数组。
用法:遍历对象或获取对象的特定集合。

javascript 复制代码
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]]
相关推荐
旧味清欢|8 分钟前
关注分离(Separation of Concerns)在前端开发中的实践演进:从 XMLHttpRequest 到 Fetch API
javascript·http·es6
热爱编程的小曾25 分钟前
sqli-labs靶场 less 8
前端·数据库·less
gongzemin37 分钟前
React 和 Vue3 在事件传递的区别
前端·vue.js·react.js
Apifox1 小时前
如何在 Apifox 中通过 Runner 运行包含云端数据库连接配置的测试场景
前端·后端·ci/cd
-代号95271 小时前
【JavaScript】十四、轮播图
javascript·css·css3
树上有只程序猿1 小时前
后端思维之高并发处理方案
前端
庸俗今天不摸鱼2 小时前
【万字总结】前端全方位性能优化指南(十)——自适应优化系统、遗传算法调参、Service Worker智能降级方案
前端·性能优化·webassembly
QTX187302 小时前
JavaScript 中的原型链与继承
开发语言·javascript·原型模式
黄毛火烧雪下2 小时前
React Context API 用于在组件树中共享全局状态
前端·javascript·react.js
Apifox2 小时前
如何在 Apifox 中通过 CLI 运行包含云端数据库连接配置的测试场景
前端·后端·程序员