JavaScriptのnewオペレータ

1335 ワード

以前よく使われていたnew演算子が、newというオブジェクトが出てきました.不思議なことに、このnewの底に何があったのかを見に来ました.
一、解析new演算
newオブジェクト
    function Test(name,age){
        this.name = name;
        this.age = age
        this.method = function (){
            return this.name +':'+ this.age;
        }
    }
    var t1 = new Test('kuohao',21);
    t1.method();      //   'kuohao':21
newという演算子を使って、t 1が対象となり、Testコンストラクションのmethod方法もあります.このnew方法は一体何をしましたか?
実はnewメソッドの楽屋はこうです.
    //var t1 = new Test('kuhao',21)
    //new Test        
    
    function Test(name,age){
        //       ,this          
        var t1 = {};
        // this       Test          。
        t1.constructor.prototype = Test.prototype;
        //         this   
        t1.name = name;
        t1.age = age
        t1.method = function (){
            return this.name +':'+this.age;
        };
        
        //       t1  
        return t1;
    }
または、new Test構造をcall方法で理解することができる.
//        
var obj = {};
//            Test            
obj.__proto__ = Test.prototype
//  call   Test                    ,    
Test.call(obj,'kuohao',21);
締め括りをつける
私の個人的な理解は、new演算子が構造オブジェクトを実例化し、実際には構造関数の実例的な属性の方法とプロトタイプの方法を継承し、オブジェクトを初期化しました.対象はJavaScriptで定義されていますが、拡張して、より多くの機能を実現します.