2016-07-27 16 views
0

戻り値関数の変数値へのアクセス方法は何ですか?戻り値関数の変数

function x(){ 
    return{ 
    foo:function(text){ 
     value= text; 
    } 
    } 
} 
a=x(); 
a.foo("some text"); 
+1

できません。おそらくそれを返すことになります。また、その変数を宣言する必要があります。 – SLaks

+0

これは 'var value ...'とされていたと仮定すると、これはクロージャーであり、オブジェクト内にあっても、別の関数で囲まれた関数の内部変数にアクセスすることはできません。 – adeneo

答えて

3

あなたはどこにも変数valueを宣言していないしていない、ので、この変数は(ブラウザの環境でウィンドウオブジェクトのプロパティとして)グローバルスコープで宣言されます。したがって、あなたは以下のようにそれにアクセスすることができます。しかし、これはです。悪い習慣、私は最初にそれを宣言していない変数を使用することを意味します。これはimplied globalと呼ばれます。

function x(){ 
 
    return{ 
 
    foo:function(text){ 
 
     value = text; 
 
    } 
 
    } 
 
} 
 
a=x(); 
 
a.foo("some text"); 
 
document.write(value);

3

私の個人的な意見は、オブジェクト指向のアプローチを使用することです。

var SomeObject = function(){ 
    var text = ""; 
    this.setText = function(value){ 
     text = value; 
    }; 
    this.getText = function(){ 
     return text; 
    }; 
}; 

var myObject = new SomeObject(); 
myObject.setText("This is the text"); 
alert(myObject.getText());