ES6对象方法简写:更简洁的代码写法

ES6 中为对象字面量引入的「方法简写」语法,这是 ES6 简化对象写法的重要特性之一,能让对象方法的定义更简洁。

方法简写的核心概念

在 ES5 及更早版本中,定义对象方法需要明确写出 属性名: 函数 的形式;而 ES6 的方法简写则允许直接省略 function 关键字和冒号,让写法更接近类的方法定义,更简洁直观。

1. 基础用法对比

先通过对比看核心区别:

javascript

运行

// ES5 定义对象方法
const objES5 = {
  name: "张三",
  sayHello: function() {
    console.log("你好,我是" + this.name);
  },
  add: function(a, b) {
    return a + b;
  }
};

// ES6 方法简写
const objES6 = {
  name: "张三",
  // 省略 : function,直接写方法名+(){}
  sayHello() {
    console.log("你好,我是" + this.name);
  },
  add(a, b) {
    return a + b;
  }
};

// 调用方式完全一致
objES5.sayHello(); // 输出:你好,我是张三
objES6.sayHello(); // 输出:你好,我是张三
console.log(objES6.add(2, 3)); // 输出:5
2. 结合计算属性名的进阶用法

方法简写还能和 ES6 的「计算属性名」结合,定义动态名称的方法:

javascript

运行

const methodName = "greet";
const person = {
  name: "李四",
  // 动态方法名 + 方法简写
  [methodName + "World"]() {
    console.log(`${this.name}:Hello World!`);
  }
};

person.greetWorld(); // 输出:李四:Hello World!
3. 注意事项
  • 方法简写定义的是普通函数,不是箭头函数,因此 this 的指向遵循普通对象方法的规则(指向调用该方法的对象);
  • 不能在方法简写中使用箭头函数替代(箭头函数没有自己的 this,会绑定外层作用域的 this),比如下面的写法是错误的(或不符合预期):

    javascript

    运行

    const badObj = {
      name: "王五",
      // 错误示范:箭头函数的this不指向badObj
      sayHello: () => {
        console.log(this.name); // 输出:undefined
      }
    };
    
  • 方法简写仅适用于对象字面量,不能用于对象原型或类的静态方法之外的场景(类的方法本身就是类似简写的形式)。

总结

  1. ES6 方法简写的核心是省略对象方法定义中的 : function,直接用 方法名() { ... } 形式,简化代码书写;
  2. 简写方法的 this 指向调用该方法的对象,区别于箭头函数;
  3. 可结合计算属性名实现动态方法名的简洁定义,是日常开发中最常用的 ES6 特性之一。
var code = "d64e330c-981d-46b1-9f7c-90069e432eaa"
posted @ 2026-01-15 20:33  chenlight  阅读(4)  评论(0)    收藏  举报  来源