2013-05-20 43 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编码的基本设计原则。 –