Javascript類の実現

1737 ワード

いくつかのグループでよく見られますが、一つのクラスの一つのfunctionはどのようにthisを呼び出すかという質問があります. 定義して公開する方法.実現するような随筆を書く.
まず、クラスについて話します.次のような特徴があります.
1.共有方法
2.プライベート方法
3.属性
4.プライベート変数
5.構造関数
直接例を見ます.
/***   ***/

var Class = function(){

    var _self = this;//            



    var _Field = "Test Field"; //    

    var privateMethod = function(){ //    

        alert(_self.Property); //    

    }



    this.Property = "Test Property"; //    

    this.Method = function(){ //    

        alert(_Field); //      

        privateMethod(); //      

    }

}

  
ここにコメントを全部書いてありますので、皆さんも一目で分かります.JSをあまり書いていない友達に対して、不思議に思うかもしれません.なぜ定義しますか?selfの変数は、jsでは他の対象言語に対してthisを使わないため、彼の解析過程と実行過程でthisが変化します.ここは簡単にjsの中でthisの定義を言います.必要があれば、もう一篇開けます.
定義:thisは、メソッドとして呼び出されたときのオブジェクトの関数です.
特徴:thisの環境は、関数が与えられた値によって異なるオブジェクトに変化することができます.
興味がある友達はネットで資料を探して調べて、本題に戻ります.self目的は、プライベート変数を複数開くために、クラス自体に直接参照することです.
先ほどもコンストラクションの問題に触れましたが、これは直接コードで実現できます.関数の最後に実行コードを直接書くとOKです.
/***   ***/

var Class = function(){

    var _self = this;//            



    var _Field = "Test Field"; //    

    var privateMethod = function(){ //    

        alert(_self.Property); //    

    }



    this.Property = "Test Property"; //    

    this.Method = function(){ //    

        alert(_Field); //      

        privateMethod(); //      

    }



    /***    ***/

    var init = function(){

        privateMethod();

    }

    init();

}

  
このクラスを使う
var c=new Class();c.Method()//使い方はこれでOKです.
転載は「Javascript類の実現」からの転載を明記してください.