2013-05-20 45 views
0

Javascript,從具有變量的函數獲取變量

如何從變量內部獲取變量以便用於整個腳本?

<script> 
var variable = function(snap) { 
    var header= snap.head(); 
    var name = snap.name(); 
}; 

alert(variable.name); 
</script> 

我希望能夠在函數外部使用variable.name。如果可能的話。

+0

你不能,至少不是這樣。閱讀「關閉」,你會明白爲什麼這是不可能的。 – elclanrs

+0

創建一個容器對象和[看這裏](http://stackoverflow.com/questions/3750082/javascript-oop-best-practices/13074081#13074081)的方向關於如何改變你想要的可訪問性.. Works非常適合頁面和控件。 –

回答

3

將「變量」函數視爲一個類。將內部變量更改爲函數的PROPERTIES。 (並且不要命名一個函數「變量」,它只是icky)。

var Variable = function(snap) { 
    this.name = snap.name() // 
} 

var the_var = new Variable(snap_func); 
console.log (the_var.name()); 
+0

+1這個構造函數模式似乎是OP試圖完成的事情 – Christophe

+0

說沒有定義snap_func。 – Brian

+0

snap_func就是我所做的 - 你會傳遞你想要傳遞給'Variable'方法的任何函數的名字。 – rGil

0

您可以刪除var並使其以這種方式工作。如果你不能做到這一點,然後製作一個像getName這樣的新方法並像這樣定義它。

this.getName = function(){ 
    return name; 
} 

要調用它,你必須使用variable.getName();

它更好地使這樣的訪問器方法,所以你可以檢查名稱是否有你可能不想發送出去的東西。

+0

鼓勵OP在窗口對象上設置一個全局變量是不好的做法,因爲它可以在任何地方被覆蓋,並且代碼不是模塊化的,它涉及打破有效和可控的javascript編碼的基本設計原則。 –