es6 基础学习之对象的扩展

ES6 中的对象扩展

在 ES6(ECMAScript 2015)中,对象有了几个重要的扩展和改进。

1. 简洁的属性名和方法名

在 ES6 中,你可以使用更简洁的语法来定义对象属性和方法。

javascript 复制代码
const x = 1, y = 2;

// ES5
const obj1 = { x: x, y: y };

// ES6
const obj2 = { x, y };

// ES5
const obj3 = {
  method: function() {
    console.log('Hello');
  }
};

// ES6
const obj4 = {
  method() {
    console.log('Hello');
  }
};

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

在对象字面量中,你可以使用方括号 [] 来定义计算属性名。

javascript 复制代码
const propName = 'name';

const obj = {
  [propName]: 'John'
};

console.log(obj.name);  // 输出 "John"

3. Object.assign()

这个方法用于将源对象的所有可枚举属性复制到目标对象中。

javascript 复制代码
const obj1 = { x: 1 };
const obj2 = { y: 2 };
const obj3 = Object.assign({}, obj1, obj2);

console.log(obj3);  // 输出 { x: 1, y: 2 }

注意:Object.assign() 是浅拷贝。

4. 对象解构(Object Destructuring)

这使得从对象中提取属性并赋值给变量更加方便。

javascript 复制代码
const { x, y } = { x: 1, y: 2 };

console.log(x);  // 输出 1
console.log(y);  // 输出 2

5. 扩展运算符(Spread Operator)和剩余运算符(Rest Operator)

扩展运算符用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。

javascript 复制代码
const obj1 = { x: 1, y: 2 };
const obj2 = { ...obj1, z: 3 };

console.log(obj2);  // 输出 { x: 1, y: 2, z: 3 }

剩余运算符用于从一个对象中取出所有可遍历属性,剔除特定属性后构建新对象。

javascript 复制代码
const { x, ...rest } = { x: 1, y: 2, z: 3 };

console.log(x);     // 输出 1
console.log(rest);  // 输出 { y: 2, z: 3 }

6. Object.values()Object.entries()

  • Object.values(): 返回一个数组,包含对象自身所有可枚举属性的值。
  • Object.entries(): 返回一个数组,包含对象自身所有可枚举属性的 [key, value] 键值对。
javascript 复制代码
const obj = { x: 1, y: 2 };

console.log(Object.values(obj));  // 输出 [1, 2]
console.log(Object.entries(obj)); // 输出 [['x', 1], ['y', 2]]

这些是 ES6 中关于对象的主要扩展和改进。这些新特性使得对象操作更加灵活和方便,也让代码更加简洁和可读。希望这些信息能帮助你更好地理解和使用 ES6 中的对象特性。

相关推荐
萌萌哒草头将军24 分钟前
🚀🚀🚀 不要只知道 Vite 了,可以看看 Farm ,Rust 编写的快速且一致的打包工具
前端·vue.js·react.js
前端南玖2 小时前
深入Vue3响应式:手写实现reactive与ref
前端·javascript·vue.js
不一样的少年_5 小时前
头像组件崩溃、乱序、加载失败?一套队列机制+多级兜底全搞定
前端·vue.js
狙击6 小时前
基于Vue3的H5自定义拍身份证人相框和国徽框
vue.js
rookiefishs7 小时前
一个在electron中强制启用触摸模式🤚🏻的方法
前端·javascript·vue.js
深呼吸9937 小时前
如何用div手写一个富文本编辑器(contenteditable="true")
前端·vue.js
BillKu8 小时前
Vue3 axios 请求设置 signal 信号属性,以便 abort 取消请求
前端·javascript·vue.js
灿灿1213811 小时前
Vue 项目路由模式全解析:从 hash 到 history 再到 abstract
javascript·vue.js·哈希算法
BillKu11 小时前
Vue3 + Element Plus中el-table加载状态分析
javascript·vue.js·elementui
大明8811 小时前
滚动锁定技术解析:以Ant Design的useScrollLocker为例
前端·vue.js·前端框架