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

实例属性、方法

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());
    }
    
}

 

posted @ 2019-01-15 14:54  酒丨剑丨仙  阅读(1711)  评论(0编辑  收藏  举报