問題のあるパッケージのクローズドスコープ

<!DOCTYPE HTML > 
< HTML > 
< ヘッド> 
    < タイトル> </ タイトル> 
</ ヘッド> 
< 身体> 
< スクリプトタイプ= "テキスト/ javascriptの" > 
    // 测试1つの
    VAR OBJ = {名:' ' 、データ:{値:1 ;}}
    関数外(){
         VAR objback = obj.data。
        
        } 
        戻りインナー; 
        
    } 
    VARのF1 = アウター(); 
    F1()
    はconsole.log(" 試験1。" 、OBJ)// {名: '母'、データ:{値:}} 1;変化しません。

    @ 試験2 

    VAR OBJ2 = {名:' ' 、データ:{値:1 ;}}
     関数outer2(){
         VAR objback = OBJ2;
         機能インナー(){ 
            objback.data =  ヌル
            はconsole.log(" テスト21"JSON.stringify(OBJ2));    // {名: '母'、データ:ヌル} 
            objback.name =  " ASDF " ; 
            はconsole.log(" 测试22 、JSON.stringify(OBJ2));    // {名: 'ASDF'、データ:ヌル} 
            objback.data = {}; 
            
            はconsole.log(" 测试23 " 、JSON.stringify(OBJ2)); // {名: 'ASDF'、データ:{}} 
        }
         戻りインナー; 
        
    } 
    VARのF2 = outer2(); 
    F2(); 
    コンソール。(ログ"試験2 「JSON.stringify(OBJ2)) // {」名前「:」ASDF「」データ「:{}} // 1,2-クロージャは、修正クロージャに参照されたオブジェクトのオブジェクト属性を説明しました反応はされないが、後に、反応は、被験体にその全体がオブジェクト参照であってもよい// テスト3。VARのOBJ3 = {名:、データ:{値:1 ;}}
     機能クラスとクラスA(){
         この.OBJ = {名前:' ' 、データ:{値:1 ;}}
         この.outer = 関数(){ VARのデータ   = この.obj.data;
             VAR
    
    

    
     
            
              DATA3 = obj3.data。
            関数内(){ 
                data.value =  2 
                DATA3 = {}; 
            } 
            戻りインナー。
        } 
        この.TEST = 関数(){ 
            
            にconsole.log(" 测试3 " この.obj.data.value)
        } 
    } 

    のvar A =  新しいクラスA(); 
    a.outer()(); 
    テスト(); 
    console.log(" 测试3 " この.obj3.data)
     // 、2,3-閉鎖オブジェクトに閉じることができない反応で修飾されたパッケージのオブジェクトのプロパティによって参照されるオブジェクトを説明するが、オブジェクトは、オブジェクトの値は反応を受ける可能性がある変更しますすべてのオブジェクトが対象に参照されているが、反応させることができる
    // 。試験4 
     機能ClassBの(){
         この.OBJ = {名:' ' 、データ:{値:1。}};
         この.outer =  関数(){ 
            
            VARのデータ   =  この.OBJ;
             機能インナー(){ 
        
                data.data.value =  2 ; 
                はconsole.log(" 試験4。" 、data.data.value)
                
            } 
            戻りインナー。
        } 
        この.TEST = 関数(){ 
    
            にconsole.log(" 测试4 " この.obj.data.value)
        } 
    } 
    //
     VARのB =  新しいClassBの()。
    b.outer()(); 
    b.test(); 

    VaRのデータ= {値:10 、データ:{値:1 ;}} 
    console.log(JSON.stringify(データ))。
    data.data = {}; 
    console.log(データ)
    //全体的な説明は、オブジェクトプロパティのオブジェクトを指し示すように変数を変更するオブジェクト自体に反応しない、この性質の点を変更したが、理由だけ変数の数。私は愚かだった
。</ スクリプト> 
</ ボディ> 
</ HTML >

 

おすすめ

転載: www.cnblogs.com/sz-toosimple/p/11769227.html