es6 class类实例、静态、私有方法属性笔记

时间:2023-07-18 14:42:43
实例属性、方法

class Foo {

    valueA = 100 //第一种实例属性定义,位置:new的实例上

    constructor() {
this.valueB = 200 //第二种实例属性定义,位置:new的实例上
} methodA() { //实例方法,位置:Foo.prototype
this.valueC = 300
} } let foo = new Foo() foo
Foo {valueA: 100, valueB: 200} foo.methodA() //foo.methodA === foo.__proto__.methodA === Foo.prototype.methodA
foo
Foo {valueA: 100, valueB: 200, valueC: 300}
静态属性、方法
不会被实例继承,可以被子类继承。直接通过类来调用
直接类.属性(Foo.valueA)的方式,实质是调用Foo / Foo.prototype.constructor的属性 class Foo { static valueA = 100 //静态属性,位置:类本身,Foo / Foo.prototype.constructor上
//Foo.valueA = 1; 也可以这样定义静态属性
static methodA() { //静态方法,位置:类本身,Foo / Foo.prototype.constructor上
this.valueC = 300 //this => 类
} } class Bar extends Foo { }
私有属性、方法
只能在类的内部使用(this.#count) class Foo {
#a;
#b; constructor(a, b) {
this.#a = a;
this.#b = b;
} #sum() {
return #a + #b;
} printSum() {
console.log(this.#sum());
} }