返回

ES13 特性概要:保持学习的势头

前端

ES13 特性在 JavaScript 生态系统中带来了期待已久的变革,为开发者提供了增强代码可读性、可维护性和表达力的强大工具。本文旨在概述这些特性的要点,帮助你深入了解 ES13 的潜力并推动你的编码实践。

ES13 引入了类字段,允许在类的顶层定义和初始化字段。这极大地简化了代码,消除了对构造函数的依赖:

class Person {
  name = 'John Doe';
  age = 25;
}

为了提高数据封装性,ES13 引入了私有方法和字段,用 # 前缀来定义:

class Person {
  #privateMethod() { ... }
  #privateField = 'secret';
}

ES13 允许在类中定义静态公共方法,这些方法可以通过类本身访问,而无需实例化对象:

class Utils {
  static calculateArea(length, width) { ... }
}

可选链式 (?) 提供了一种安全访问嵌套属性的方法,避免了处理 undefined 值时的错误:

const user = {
  name: 'John Doe',
  address: {
    street: '123 Main Street'
  }
};

console.log(user?.address?.street); // 输出:123 Main Street

扩展运算符 (...) 允许将数组或对象展开为单独的元素,简化了复杂的数据操作:

const numbers = [1, 2, 3];
const newNumbers = [...numbers, 4, 5]; // 输出: [1, 2, 3, 4, 5]

ES13 允许在箭头函数中显式绑定 this,确保上下文的一致性:

const person = {
  name: 'John Doe',
  greet() {
    setTimeout(() => {
      console.log(this.name); // 输出:John Doe
    }, 1000);
  }
};

JSON 模块提供了方便的方法来处理 JSON 数据,包括解析、字符串化和验证:

const json = '{"name": "John Doe"}';
const data = JSON.parse(json); // 输出:{ name: 'John Doe' }

Math.cbrt() 方法提供了计算给定数字立方根的便捷方式:

console.log(Math.cbrt(8)); // 输出:2

Number.isNaN() 方法提供了一种可靠的方法来检查一个值是否为 NaN (非数字):

console.log(Number.isNaN(NaN)); // 输出:true