es6的class是原型继承的语法糖,本质仍是构造函数,必须用new调用,方法挂载原型,继承通过extends和super实现,底层全依赖原型链。

ES6 的 class 不是全新机制,而是对原型继承的语法糖,它让 JavaScript 的面向对象编程更清晰、更接近传统语言习惯,同时保留了底层灵活性。掌握它,关键不在“写得像 Java”,而在理解其与原型、this、继承链的真实关系。
类的本质与构造函数
class 声明本质上是一个特殊函数,会被提升(但不会初始化),且必须用 new 调用。内部的 constructor 是默认构造方法,负责初始化实例属性:
- 不写
constructor,引擎自动补一个空函数 -
this指向新创建的实例,所有通过this.xxx =赋值的都是实例成员 - 直接在 class 外部给类名赋值(如
Star.count = 0)定义的是静态成员,只能被类本身调用,不能被实例访问
方法定义与 this 绑定
类中定义的方法默认是实例方法,挂载在原型上(Star.prototype.sing),所有实例共享。注意:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 方法体里没有
function关键字,也不用逗号分隔 - 普通方法中的
this由调用方式决定——若被解构或作为回调传入,容易丢失;可用箭头函数、bind或事件处理器中显式绑定 - 静态方法用
static关键字声明,属于类自身,常用于工具函数(如Person.compareAge())
继承:extends 与 super
ES6 继承比 ES5 原型链更直观,但底层仍是原型链。子类必须在 constructor 中第一行调用 super(),否则报错:
-
super()初始化父类的this,相当于执行父类constructor -
super.xxx可访问父类原型上的方法或属性(如super.sayHello()) - 子类未定义
constructor时,会自动获得一个仅调用super(...args)的默认构造器
封装与访问控制进阶
JavaScript 原生不支持 private 或 protected 关键字(ES2022+ 支持私有字段 #name,但兼容性需留意)。常见实践包括:
- 用下划线前缀(如
_internalId)约定私有属性,靠团队规范约束 - 使用
get/set访问器控制读写逻辑(如验证年龄范围) - 结合闭包或 WeakMap 实现真正私有状态(适合高安全要求场景)
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










