ES6 Class 类
js一个对象的行为取决于它自身的属性及其原型的属性
class
class 关键字 定义类
类定义不会被提升,这意味着,必须在访问前对类进行定义,否则就会报错。
类中方法不需要 function 关键字。
方法间不能加分号。
Class 内部只有静态方法,没有静态属性。 static
公共属性 .prototype.属性
name 属性
返回跟在 class 后的类名
constructor 方法是类的默认方法,创建类的实例化对象时被调用
class Xxx {
constructor() { // 类的构造函数
this.xxx = 1 // 在类的构造函数里,this 的值指向新创建的实例。
// 在不设置返回时 this 的值将自动作为 new 的结果返回
}
// 属性
[static] 属性名 = xxx // static 可选,表示静态 则只能通过类访问而不能通过实例访问
// 方法
[static] 方法名() {} // 方法可以被所有实例共享,若在构造中创建则每次实例都会创建改函数,造成不必要的开销
// 静态块 在类第一次加载时运行的代码块,可以访问静态私有属性
static {
···
}
get xxx() {}
set xxx() {}
// 使用 # 前缀表示私有, “#属性名”、“#方法名”、“set #xx()”等
// 相同的名称不能声明两次,且它们不能被删除
}
const yy = new Xxx() // 必须使用 new 否重报错
yy.xxx // 1
ES6 之前的写法
function MyClass() { // 对应 constructor this.myField = "foo"; // 构造函数体 } // 在外部定义属性和方法 MyClass.myStaticField = "bar"; MyClass.myStaticMethod = function () { // myStaticMethod 体 }; MyClass.prototype.myMethod = function () { // myMethod 体 }; (function () { // 静态初始化代码 })();
类和方法修饰 @
在类定义之前 @方法名
多个参数要进行函数的嵌套 return function
extends 继承
一个对象可以“借用”另一个对象的大部分行为,同时覆盖或增强某些部分的逻辑。
// 在constructor中,必须使用 super
constructor(r, g, b, a) {
super(r, g, b) // super(父类所需的构造属性)
// 不能在 super() 之前访问 this
this.#alpha = a
}
// 还可以通过 super 访问父类的方法
派生类也可以覆盖父类的方法(包括静态方法)
派生类无权访问父类的私有字段——“硬私有”
何时使用类?
你应该在你想要储存一些内部数据、并暴露大量方法的时候考虑使用类。
内容会不断更新,欢迎批评指正。
分类:
# ES6+
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?