ES6对object类型做的常用升级优化

ES6对object类型做的常用升级优化

ES6 对对象(Object)类型进行了多项升级和优化,引入了新的语法和方法,使得对象操作更加方便和强大。以下是 ES6 对对象类型的常用升级和优化:

  1. 属性简写
  • 当对象的属性名和变量名相同时,可以省略属性值。

示例:

javascript 复制代码
const name = "Alice";
const age = 25;

// ES5
const obj1 = {
  name: name,
  age: age,
};

// ES6
const obj2 = {
  name,
  age,
};

console.log(obj2); // 输出:{ name: "Alice", age: 25 }
  1. 方法简写
  • 在对象中定义方法时,可以省略 function 关键字。

示例:

javascript 复制代码
// ES5
const obj1 = {
  greet: function() {
    console.log("Hello!");
  },
};

// ES6
const obj2 = {
  greet() {
    console.log("Hello!");
  },
};

obj2.greet(); // 输出:Hello!
  1. 计算属性名
  • 使用 [] 可以在对象字面量中动态定义属性名。

示例:

javascript 复制代码
const key = "name";
const obj = {
  [key]: "Alice",
  ["age"]: 25,
};

console.log(obj); // 输出:{ name: "Alice", age: 25 }
  1. Object.is()
  • 比较两个值是否严格相等,类似于 ===,但处理了一些特殊情况(如 NaN+0/-0)。

示例:

javascript 复制代码
console.log(Object.is(NaN, NaN)); // 输出:true
console.log(Object.is(+0, -0)); // 输出:false
console.log(Object.is(42, 42)); // 输出:true
  1. Object.assign()
  • 将一个或多个源对象的属性复制到目标对象中,返回目标对象。
  • 用于对象的浅拷贝或合并。

示例:

javascript 复制代码
const target = { a: 1 };
const source1 = { b: 2 };
const source2 = { c: 3 };

const result = Object.assign(target, source1, source2);
console.log(result); // 输出:{ a: 1, b: 2, c: 3 }
console.log(target); // 输出:{ a: 1, b: 2, c: 3 }
  1. Object.keys()Object.values()Object.entries()
  • Object.keys():返回对象自身可枚举属性的键组成的数组。
  • Object.values():返回对象自身可枚举属性的值组成的数组。
  • Object.entries():返回对象自身可枚举属性的键值对组成的数组。

示例:

javascript 复制代码
const obj = { a: 1, b: 2, c: 3 };

console.log(Object.keys(obj)); // 输出:["a", "b", "c"]
console.log(Object.values(obj)); // 输出:[1, 2, 3]
console.log(Object.entries(obj)); // 输出:[["a", 1], ["b", 2], ["c", 3]]
  1. Object.getOwnPropertyDescriptors()
  • 返回对象所有自身属性的描述符(包括 valuewritableenumerableconfigurable)。

示例:

javascript 复制代码
const obj = { a: 1 };
const descriptors = Object.getOwnPropertyDescriptors(obj);

console.log(descriptors.a);
// 输出:
// {
//   value: 1,
//   writable: true,
//   enumerable: true,
//   configurable: true
// }
  1. Object.setPrototypeOf()Object.getPrototypeOf()
  • Object.setPrototypeOf():设置对象的原型。
  • Object.getPrototypeOf():获取对象的原型。

示例:

javascript 复制代码
const parent = { a: 1 };
const child = { b: 2 };

Object.setPrototypeOf(child, parent);
console.log(Object.getPrototypeOf(child)); // 输出:{ a: 1 }
console.log(child.a); // 输出:1(通过原型链访问)
  1. super 关键字
  • 用于在对象方法中访问原型对象的属性或方法。

示例:

javascript 复制代码
const parent = {
  greet() {
    return "Hello!";
  },
};

const child = {
  greet() {
    return super.greet() + " World!";
  },
};

Object.setPrototypeOf(child, parent);
console.log(child.greet()); // 输出:Hello! World!
  1. 对象解构
  • 从对象中提取属性并赋值给变量。

示例:

javascript 复制代码
const obj = { a: 1, b: 2, c: 3 };

// 解构赋值
const { a, b } = obj;
console.log(a, b); // 输出:1 2

// 解构时重命名
const { a: x, b: y } = obj;
console.log(x, y); // 输出:1 2

// 默认值
const { d = 4 } = obj;
console.log(d); // 输出:4
  1. Symbol 作为属性名
  • 使用 Symbol 作为对象的属性名,确保属性名的唯一性。

示例:

javascript 复制代码
const key = Symbol("key");
const obj = {
  [key]: "value",
};

console.log(obj[key]); // 输出:value
  1. Object.freeze()Object.seal()
  • Object.freeze():冻结对象,使其不可修改(不能添加、删除或修改属性)。
  • Object.seal():密封对象,使其不可添加或删除属性,但可以修改现有属性。

示例:

javascript 复制代码
const obj = { a: 1 };

Object.freeze(obj);
obj.a = 2; // 无效
console.log(obj.a); // 输出:1

Object.seal(obj);
obj.a = 2; // 有效
obj.b = 3; // 无效
console.log(obj); // 输出:{ a: 2 }

总结

ES6 对对象类型的升级和优化主要包括:

  • 属性简写和方法简写。
  • 计算属性名。
  • Object.is() 用于精确比较。
  • Object.assign() 用于对象合并。
  • Object.keys()Object.values()Object.entries() 用于获取对象的键、值和键值对。
  • Object.getOwnPropertyDescriptors() 用于获取属性描述符。
  • Object.setPrototypeOf()Object.getPrototypeOf() 用于操作原型。
  • super 关键字用于访问原型方法。
  • 对象解构赋值。
  • Symbol 作为属性名。
  • Object.freeze()Object.seal() 用于对象保护。

这些特性使得对象操作更加方便和强大,提升了 JavaScript 的面向对象编程能力。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github

相关推荐
崔庆才丨静觅6 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60617 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了7 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅7 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅8 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment8 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅8 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊8 小时前
jwt介绍
前端
爱敲代码的小鱼8 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax