ノート--- JS作成したカスタムは、5つの方法オブジェクト

カスタムオブジェクトのメソッドを作成します。

工場出荷時のパターン:

関数createPerson(名前、OBJ、ジョブ){

  VAR 0 =新しいオブジェクト()

  o.name =名前

  o.sayName =関数(){

    警告(this.name)

  }

  O返します

}

短所:物体認識の問題を解決しません。

2.コンストラクタ

  関数人(名前、年齢、仕事){

    this.name =名前

    this.age =年齢

    this.job =仕事

    this.sayName =関数(){

      警告(this.name)

    }

 

  }

長所:物体認識の問題を解決

短所:共有方法が実装されていません

3.プロトタイプモデル

  関数人(){}

  Person.prototype.name =「四時」

  Person.prototype.job =「フロントエンド」

  Person.prototype.sayName =関数(){

    警告(this.name)

  }

長所:共有方法を実現するだけでなく、物体認識の問題を回避します

短所:初期化パラメータを渡すことができないが、この方法だけで、共有されていない性質の全てをも共有され、一例を変更し、すべてのインスタンスが影響を受ける可能性があります。

4.プロトタイプモデルのコンストラクタ+

  関数人(名前、年齢、仕事){

    this.name =名前

    this.age =年齢

    this.job =仕事

  }

  Person.prototype = {

    コンストラクタ:人、

    sayName:関数(){

      警告(this.name)

    } 

  }

利点:問題を解決するための物体認識。共有プロパティを解決します。

短所:なし。

 

4.寄生コンストラクタ

  機能SpecialArray(名前、仕事、年齢){

    VaRの値=新しいアレイ()

    values.push.apply(値、引数)

    values.toPipedString =関数(){

      this.join返します( '|')

    }

 

    戻り値

  }

 長所:拡張の元のオブジェクト(配列)の基礎に影響を与えることができません

 短所:オブジェクト・タイプを決定することができず、コンストラクタの例と関係なし

 

音のコンストラクタ

  関数人(名前、年齢、仕事){

    VAR 0 =新しいオブジェクト()

    o.sayName = fucntion(){

      警告(名)

    }

    O返します

  }

  VaRの友人=人( '四時'、29 'のフロントエンド')

  firend.sayName()

  長所:sayNameメソッドを呼び出すことに加えて、メンバーのコンストラクタに渡された生データにアクセスすることはありません。この、new演算子のコンストラクタを使用していない操作を使用しないでください

  短所:まだオブジェクトを識別することはできません。

 

おすすめ

転載: www.cnblogs.com/fourthCities/p/10962718.html