デザインモード(3)[JS版]-JavaScriptの中のコンストラクションモードは何ですか?


目次
1 コンストラクタモードとは?
2構造関数モードの役割と注意事項
2.1モード作用
2.2注意事項
3コード実現
4 コンストラクターモードは単一の例モードと結合します.
前の記事の単一例モード:https://blog.csdn.net/qq_23853743/articale/details/107451561
1 コンストラクタモードとは?
特定のタイプのオブジェクトを作成するためのコンストラクタは、使用するオブジェクトだけでなく、オブジェクトを最初に作成したときにオブジェクトのメンバー値を設定するためのパラメータも受け入れられます.自分のコンストラクタをカスタマイズして、カスタムオブジェクトの属性や方法を中に宣言します.JavaScriptでは、構造関数は通常、インスタンスを実現するために使用されると考えられています.JavaScriptにはクラスの概要はありませんが、特殊な構造関数があります.newキーワードでカスタマイズしたコンストラクタを呼び出し、コンストラクタ内部で、thisキーが新しく作成されたオブジェクトを参照します.
2構造関数モードの役割と注意事項
2.1モード作用
1.特定の種類のオブジェクトを作成します.
2.初めて宣言した場合は、対象に値を付けます.
3.自分で構造関数を宣言し、属性と方法を与える.
2.2注意事項
1.関数を宣言する時、業務ロジックを処理します.
2.区分と単例の違いは、単例に合わせて初期化を実現する.
3.コンストラクタは大文字で始まることをお勧めします.
4.  newのコストに注意します.(引き継ぎ)
3コード実現


    
        
              
    
    
    
    
        //Person         ,    new      ,
        //Person      ,      Java        
        function Person(name,age){
            //       ,      new     
            if(!(this instanceof Person)){
                return new Person(name,age);
            }
            this.name = name;
            this.age = age;
            this.sayName = function(){
                //  js       
               return '  :'+this.name+'  :'+this.age;
            }
        }
        //      
        var xiaoMing = new Person('  ',20);
        alert(xiaoMing.sayName());
        //      
        var xiaoZhang= new Person('  ',30,);
        alert(xiaoZhang.sayName());
    
Personを作成するには、newオペレータ、newが必要です. キーワードは以下のように操作されます.
1空のシンプルなJavaScriptオブジェクトを作成します.var o=new Object();
2 このコンストラクションの役割領域を新しいオブジェクトに割り当てます. 
3ステップ1で新しく作成されたオブジェクトをthisのコンテキストとします.
3 コンストラクタのコードを実行します.この新しいオブジェクトに属性を追加します.
4この関数がオブジェクトに返されていない場合、this(新しいオブジェクト)を返します.
前の例では、xiaoMingとxiaoZhangはそれぞれPersonの異なる例を保存しています.これらの2つのオブジェクトはいずれもPerson(構造関数)属性を有しています.
console.log(xiaoMing.constructor === Person);//true

console.log(xiaoZhang.constructor === Person);//true
そしてこの2つの例は、構造関数のプロトタイプにリンクされてもよい.
console.log(xiaoMing.__proto__ === Person.prototype);//true

console.log(xiaoMing.__proto__ === Person.prototype);//true
instance ofでオブジェクトのタイプをチェックできます.(すべてのオブジェクトはObjectに継承されます.)
console.log(xiaoZhang instanceof Person);//true

console.log(xiaoZhang instanceof Object);//true

console.log(xiaoMing instanceof Person);//true

console.log(xiaoMing instanceof Object);//true
4 コンストラクターモードは単一の例モードと結合します.


    
        
        
    
    
    
    <script>
        var Student = {
            Person: function(name, age) {
                if (!(this instanceof Student.Person)) {
                    return new Student.Person(name, age);
                }
                this.name = name;
                this.age = age;
                this.sayName = function() {
                    return '  :' + this.name + ',  :' + this.age;
                }
            }
        }

        var Employee = {
            Person: function(name, age) {
                if (!(this instanceof Employee.Person)) {
                    return new Employee.Person(name, age);
                }
                this.name = name;
                this.age = age;
                this.sayName = function() {
                    return '  :' + this.name + ',  :' + this.age;
                }
            }
        }

        var xiaoMing = new Student.Person('  ', 20);
        alert(xiaoMing.sayName());
        var xiaoZhang = new Employee.Person('  ', 30, );
        alert(xiaoZhang.sayName());
    </script>
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>