ES6 对象的扩展(十五)

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]]

相关推荐

  1. ES6 对象扩展

    2024-07-17 13:16:02       25 阅读
  2. 【07】ES6对象扩展

    2024-07-17 13:16:02       38 阅读
  3. ES6 数值扩展八)

    2024-07-17 13:16:02       15 阅读
  4. ES6 数组扩展六)

    2024-07-17 13:16:02       19 阅读
  5. ES6 正则扩展九)

    2024-07-17 13:16:02       24 阅读
  6. ES6对象新增了哪些扩展

    2024-07-17 13:16:02       55 阅读
  7. ES6 Nunber类型、Math对象扩展

    2024-07-17 13:16:02       35 阅读
  8. ES6扩展

    2024-07-17 13:16:02       36 阅读
  9. ES6—运算符扩展

    2024-07-17 13:16:02       30 阅读
  10. ES6 对象新增方法(四)

    2024-07-17 13:16:02       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 13:16:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 13:16:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 13:16:02       57 阅读
  4. Python语言-面向对象

    2024-07-17 13:16:02       68 阅读

热门阅读

  1. 自动化创建 AWS RDS 实例告警

    2024-07-17 13:16:02       22 阅读
  2. C语言-->指针详解

    2024-07-17 13:16:02       21 阅读
  3. 【乐吾乐2D可视化组态编辑器】消息

    2024-07-17 13:16:02       24 阅读
  4. C 语言实例 - 数组拆分与合并

    2024-07-17 13:16:02       20 阅读
  5. vue3 学习笔记11 -- 模板语法和指令

    2024-07-17 13:16:02       21 阅读
  6. GNN Algorithms(9): 多模态Multi-Modal、多任务Multi-Task

    2024-07-17 13:16:02       27 阅读
  7. Julia 流程控制

    2024-07-17 13:16:02       24 阅读
  8. 关于C# 开发Winfrom事后总结

    2024-07-17 13:16:02       25 阅读