ES6 新特性详解
ES6(ECMAScript 2015)是 JavaScript 发展史上的重要里程碑,它引入了许多现代化语法,让代码更简洁、逻辑更清晰。今天我们重点聊聊数字字面量、Symbol 类型以及 Class 类的继承机制。
数字字面量的扩展
在 ES6 之前,我们主要使用十进制。现在,二进制和八进制有了直接的写法,处理底层数据时更方便。
- 二进制:使用前缀
0b或0B - 八进制:使用前缀
0o或0O
let binary = 0b1010; // 二进制 1010,对应十进制 10
console.log(binary);
let octal = 0o12; // 八进制 12,对应十进制 10
console.log(octal);
Symbol 类型
Symbol 是 ES6 引入的一种新的原始数据类型,主要用于创建唯一且不可变的标识符。它的核心价值在于解决对象键名冲突的问题,即使描述相同,生成的 Symbol 也不相等。
const sym1 = Symbol('description');
const sym2 = Symbol('description');
// 两个 Symbol 实例互不相等
console.log(sym1 === sym2); // 输出:false
在实际开发中,这常用于定义对象的私有属性,避免被外部意外覆盖。
Class 与继承
Class 提供了一种更清晰的面向对象编程模板,定义了对象的属性和方法。虽然本质仍是基于原型的实现,但语法上更接近传统 OOP 语言。
基础类定义
class Parent {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
子类继承
当子类需要继承父类时,必须在构造函数中调用 super()。这是访问父类属性和方法的关键,如果遗漏,会直接抛出错误导致无法使用 this。
class Child extends Parent {
constructor(name) {
super(name); // 必须调用 super,否则无法访问 this
}
greet() {
super.greet(); // 调用父类方法
console.log('I am a child.');
}
}
通过这种方式,我们可以轻松复用父类逻辑,同时扩展子类的特定行为。掌握这些基础语法,能帮你写出更规范的现代 JavaScript 代码。


