2016-07-27 125 views
0

有沒有什麼方法在Javascript中,如何獲取變量值的返回函數?變量返回函數

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());