JS学習ノート-OO疑問のパッケージ


パッケージはオブジェクト指向の基本であり、今日勉強する匿名関数とクローズドはJSのオブジェクト指向パッケージを実現するためです.実装、実装、パッケージ変数は、データ、システムのセキュリティを向上させ、パッケージはオブジェクト指向の基礎です.
一、匿名関数
        名前の関数がありません.
                 function(){…}
        個々に存在する匿名関数は、変数に値を割り当てて呼び出したり、表式で自己実行したりすることで実行できません.
                  1.変数に値を付ける一般的な関数の使い方
                          var run=function(){
                                   returnメソッド運転中';
                          };
                          alert(run)
                  2.表現による自己実行
                          (function(argmentsオプション)
                          {
                                   alert('メソッド運転中')
                           })(argments)
二、閉め切ってください
        通常の関数の内部に匿名関数を作成し、匿名関数は、通常の関数の変数にアクセスし、オブジェクトにカプセル化されたような特性を実現します.この匿名関数は、一般関数に対応するクローズドと呼ばれます.クローズドは、外部に作成されたインターフェースで、インターフェースを介して関数内部変数にアクセスする効果です.
        functionrun(){
                 var username='Forrest'
                 return function()//匿名関数でボックス()のローカル変数に戻ります.
                          return username;
                 };
        }
        //alert;                 //エラーusername is not defined
        alert(run)
       特徴:クローズドで使用される局所変数はメモリに存在し、グローバル変数を使用したネーミング衝突などが発生しないようにします.注意すべきことは、クローズドでthisキーワードを使用して、ウィンドウズオブジェクトを指すことです.
 
パッケージ
         より良い安全性、データ保護のためには、データを私有化するパッケージが必要であり、JSにはブロックレベルの機能領域という概念がない(すなわち、宣言の変数にもアクセスできる)が、前の基礎があれば、他の正規面から対象言語へのパッケージ効果を達成することができる.
 function user(){
	 (function(){
		 for(i = 0; i<5; i++){
			 alert(i);
		 }
	 })();
	 alert(i);                          //        i
 }
 //           
 (function(){
	 var username= 'Forrest';
	 alert(username);
})();                                  //         ,      

 //      
 function User(){
	var username= Forrest;            //    
	function learn(){                 //    
		 return '   ';
	 };

	 //      ,        
	 this.userlearn = function(){
		 return username + learn();
	 };
 }  
 var user = new User()
 alert(user.userlearn());

 //  get()、set()
 function User(value){
	 var user = value;
	 this.getUser = function(){
		 return user;
	 }
	 this.setUser = function(value){
		 user = value;
	 }
 }
 var user = new User('Forrest');
 alert(user.getUser());
 user.setUser('Li');
 alert(user.getUser());

 //      
 (function(){
	 var user = '';
	 User = function(value){
		 user = value;
	 };
	 User.prototype.getUser = function(){
		 return user;
	 };
	 User.prototype.setUser = function(value){
		 user = value;
	 };
 })();

 
 //         
 function NormalUser(){}
 var user = function(){
	 var user = 'Forrest';
	 function learn(){
		 return user + '   ...';
	 };
	 var nu = new NormalUser();
	 nu.userlearn = function(){
		 return learn();
	 };
	 return nu;
 }();
 alert(user.userlearn());
         
結語:
         JSは正统的な対象に向けた言叶ではないが、対象に向けたパッケージ、継承、多态などの効果も得られるので、勉强する上ではよく理解する必要があります.特にJSを使う人は特に多くないです.今后のアプリケーションでこの一连の问题を解决するしかないです.