JSいくつかの一般的な継承されたメソッド

1.プロトタイプチェーンを継承します

1  // 1.プロトタイプ継承チェーン
2  / *  
3つの     短所:すべての属性が共有され、パラメータを渡すことはできません
 4。 * / 
5。 機能人(名前、年齢){
 6。     この .nameの= 名前
 7。     この .age = 年齢
 8。 }
 9。 = Person.prototype.sayName()=> {
 10      はconsole.log(この.nameの)
 。11  }
 12は 、関数マン(名){
 13である     
14  }
 15 Man.prototype = 新しい新規人物()
 16 Man.prototype.name =「zhangsan "
 17 VaRの zhangsan = マン( 'zhangsan' 18はconsole.log(zhangsan.name)// zhangsan

2.コンストラクタ継承(古典的な継承)

// コンストラクタの継承(古典の継承)
/ *  
    利点:あなたは、パラメータ渡すことができます
    短所:オブジェクトを作成し、コンストラクタ内のすべてのメソッドをするたびに作成され、対応する方法、大幅に無駄なメモリ
* / 
機能Perent(名前、年齢、性別) {
     この .nameの= 名前
     この .age = 年齢
     この .sex = セックス
     この .sayName = 関数(){ 
        にconsole.log(この.nameの)
    } 
} 

関数の子(名前、年齢、性別){ 
    Perent.call(、名前、年齢、性別)
} 
のlet子 = 新しい新しい子( 'リージ'、18 'M'、である
にconsole.log(子供)   // 子{名: 'リージ'、年齢:18、性別: '男'、sayName:[機能]}

3.組み合わせの継承(+コンストラクタプロトタイプチェーン)

// 3.合成モード(プロトタイプチェーンコンストラクタ+)
/ *  
    これは、プロトタイプチェーンコンストラクタそれぞれの利点を最大限に活用し、最も一般的に使用されるJSメソッド継承される

* / 
関数動物(名前、年齢){
     この。 =名前名前
     この .age = 年齢
} 
Animal.prototype.sayName = 関数(){ 
    にconsole.log(この.nameの)
} 
関数キャット(名前、年齢、色){ 
    Animal.call(これは、名前、年齢)
     。 =カラー
} 
Cat.prototype = Animal.prototype   // プロトタイププロトタイプ猫動物向け 
Cat.prototype.constructor =猫   // 将猫的构造函数指向猫 
ましょう猫= 新しい猫( 'xiaobai'、3、 '白' 
はconsole.log(猫)//猫{名: 'xiaobai'、年齢:3、色: '白' } 
cat.sayName()    // xiaobai

4.es6方法は継承されました

// 4.es6继承方法の
クラスごと{ 
    コンストラクタ(名前){ 
        この .nameの= 
    } 
    sayName(){ 
        にconsole.log(この.nameの)
    } 
} 

クラスソンあたり{延び
    コンストラクタ(名前、年齢){ 
        スーパー(名前)
        この .age = 年齢
    } 
} 
息子ましょう = 新しい息子( 'zhangsanを'、18 
にconsole.log(息子)// 息子{名: 'zhangsan'、年齢:18} 
son.sayName()// zhangsan

 

おすすめ

転載: www.cnblogs.com/songyao666/p/11427113.html