クラス属性ES6の承継の問題を調べ

テストクラスの継承

このホワイトペーパーではなく心で、読みやすさやレイアウトの問題を考慮していません

条件:者は2つのコンストラクタを定義し、子、子プロパティが者から継承され、子のプロトタイピング方法は者ハローから継承されました。

目的:

  1. 人は、この方法は次の場合に変更される)(子がハロー継承を決定するために、)(ハロープロトタイプ方法を変更します
  2. 息子変化継承されたメソッドハロー()、親コンストラクタ(ハローを決定するためのプロトタイプ法)が変更され
// 父构造函数
class Persons {
    constructor() {} 
  hello() {
    console.log('Person 方法未改变')
  }
}

var a = new Persons()  // 检测构造函数 Persons 是否创建成功
a.hello()

// 子构造函数
class Son extends Persons {
    constructor(){
        super()
        
    }
    word() {
        console.log("新构造函数")
    }
}

var b = new Son()  // 检验构造函数 Son 是否创建成功
b.hello()
b.word()

Persons.prototype.hello = function() {  // 改变 Persons 的构造函数的原型方法
    console.log("父构构造函数的原型方法已改变,打印表示同时改变了子构造函数的原型方法")
}

var d = new Son()   // 查看父构造函数的原型改变,子构造函数原型是否改变
d.hello();

Son.prototype.hello = function() {
    console.log("改变 Son 构造函数的原型,看看会不会改变 Persons 构造函数的原型,与上面的一样,表示子构造函数原型改变,不影响父构造函数原型")
}

var e = new Persons()  // 看看子构造函数的原型 改变,父构造函数的原型会不会改变,与上面打印的一样,表示子构造函数原型改变,不影响父构造函数原型
e.hello()     

印刷結果:

Person 方法未改变
Person 方法未改变
新构造函数
父构构造函数的原型方法已改变,打印表示同时改变了子构造函数的原型方法
父构构造函数的原型方法已改变,打印表示同时改变了子构造函数的原型方法

結論:クラス継承されたプロパティは、次のいくつかの特性を持っています

  1. 下部の関数のプロトタイプを変更すると、プロトタイプのコンストラクタは、親を変更しません
  2. 親コンストラクタのプロトタイプの変更、変更部分構造関数プロトタイプ

ヒント:メッセージを前方に置くためにあなたを歓迎するとエラーに、兄があるこの記事であれば、あなたに感謝~~

おすすめ

転載: www.cnblogs.com/mhxs/p/10953931.html