2017-09-08 15 views

答えて

0

ecma 6では、グローバル変数をキーワードconstで宣言でき、これらの変数は変更されません。

const VARIABLE="wont be modified"; 

さらに、関数を作成するたびにクロージャが作成されます。 閉鎖あなたが関数を作成し、それに取り組むことができるように似た何かを達成するために閉鎖

(function(global){ 
 
     var a="I'm a"; 
 
     function modifyA(newvalue){ 
 
      a=newvalue; 
 
     } 
 
     function getA(){ 
 
      return a; 
 
     } 
 
     global.modifyA=modifyA; 
 
     global.getA=getA;  
 
    })(window); 
 

 
console.log(typeof a,"a doesn't exist in global environment"); 
 
console.log(getA(),"but exist in getA's closure"); 
 
modifyA('I have a new value'); 
 
console.log(getA(),"A can only be modify it with modifyA function");

0

一つの方法は、作成することです、外側の関数の変数にアクセスすることができ、内側の関数でありますあなたはcreateObjectGetter("abc")のようにそれを呼び出すときに

function createObjectGetter(obj) 
{ 
    this.getObject = function() { return obj; }; 
} 

:値を設定し、同様に値を返すために、新しい「取得」関数を作成しますローカル機能その時点からgetObject()のようなオブジェクトをフェッチすることができます。​​を返しますが、値は一定のままで、createObjectGetter()メソッドでのみ調整できます。

参考:How can you make a variable/Object read only in Javascript?

関連する問題