JS作成対象のパターンインスタンスのまとめ


本論文の例は、JS作成対象のパターンをまとめたものである。皆さんに参考にしてあげます。具体的には以下の通りです。
1.工場モード
特定のオブジェクトを作成するプロセスを抽象化し、特定のインターフェースを実装してオブジェクトを作成する関数を作成しました。
  • 新しいオブジェクト
  • を作成します。
  • 属性と方法を定義する
  • return新規オブジェクト
  • 
    function createPerson(name, age, job) {
     var obj = new Object();
     obj.name = name;
     obj.age = age;
     obj.job = job;
     obj.sayHi = function() {
     congsole.log(this.name);
     };
     return obj;
    }
    
    var person1 = createPerson("name1", "age1", "job1");
    var person2 = createPerson("name2", "age2", "job2");
    
    
    問題があります
    オブジェクト認識の問題が解決されていません。
    2.コンストラクタモード
  • 非明示的作成対象
  • は、直接に属性と方法をthis
  • に定義する。
  • return
  • がありません。
  • newオペレータを通じて
  • を呼び出します。
    
    function Person(name, age, job) {
     this.name = name;
     this.age = age;
     this.job = job;
     this.sayHi = function() {
     console.log(this.name);
     };
    }
    
    var person1 = new Person("name1", "age1", "job1");
    var person2 = new Person("name2", "age2", "job2");
    
    
    問題があります
  • 各方法は、インスタンスに
  • を作成します。
    3.原型モード
    作成された各関数は、prototypeのプロトタイプ属性を有しており、この属性は、オブジェクトを指すポインタであり、このオブジェクトの用途は、特定のタイプのすべてのインスタンスによって共有できる属性と方法を含む。
    すべての原生引用タイプはその構造関数の原型に方法を定義しています。
    
    function Person{
    
    }
    
    Person.prototype.name="name"
    Person.prototype.age="age"
    Person.prototype.job="job"
    Person.prototype.sayHi=function(){
     console.log(this.name)
    }
    
    var person1=new Person()
    var person2=new Person()
    
    
    問題があります
  • のすべての属性は、多くのインスタンスによって共有される
  • である。
    4.コンビネーション構造と原型モード
    構造関数を使用して、例示的な属性、プロトタイプを定義し、方法と共有の属性を定義します。
    
    function Person(name, age, job) {
     this.name = name;
     this.age = age;
     this.job = job;
    }
    Person.prototype={
     constructor:Person;
     sayHi:function(){
     console.log(this.name)
     }
    }
    
    var person1 = new Person("name1", "age1", "job1");
    
    
    5.ダイナミックモデル
    ここでプロトタイプの変更は、すべてのインスタンスに対して有効になります。
    
    function Person(name,age,job){
     this.name=name;
     this.age=age;
     this.job=job;
     if(typeof this.sayHi !="function" ){
     Person.prototype.sayHi=functong(){
      console.log(this.name)
     }
     }
    }
    
    var person1 = new Person("name1", "age1", "job1");
    
    
    6.寄生構造関数モード
    工場モード+構造関数
  • が返したオブジェクトとコンストラクション、コンストラクタのプロトタイプ属性の間には関係がありません。
  • instanceofに依存してオブジェクトの原型を決めることができません。
  • の使用を推奨していません。
    
    function Person(name, age, job) {
     var obj = new Object();
     obj.name = name;
     obj.age = age;
     obj.job = job;
     obj.sayHi = function() {
     congsole.log(this.name);
     };
     return obj;
    }
    
    var person1 = new Person("name1", "age1", "job1");
    
    
    7.安定構造モード
  • は、共通属性
  • がない。
  • thisを使わない
  • です。
  • newを使わない
  • です。
    
    function Person(name, age, job) {
     var obj = new Object();
     //          
     obj.sayHi = function() {
     congsole.log(name);
     };
     return obj;
    }
    
    var person1 = Person("name1", "age1", "job1");
    // name1
    
    
    JavaScript高級プログラム設計』第六章から抜粋する。
    興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
    もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「javascript対象向け入門教程」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」および「JavaScript数学演算の使い方のまとめ
    本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。