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 访问父类的方法

派生类也可以覆盖父类的方法(包括静态方法)
派生类无权访问父类的私有字段——“硬私有”

何时使用类?

你应该在你想要储存一些内部数据、并暴露大量方法的时候考虑使用类。

posted @   海胆Sur  阅读(8)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示