【问题标题】:Get variable from a function that has the variable从具有变量的函数中获取变量
【发布时间】:2013-05-20 01:32:49
【问题描述】:

Javascript,

如何从要在整个脚本中使用的变量中获取变量?

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

alert(variable.name);
</script>

我希望能够在函数之外使用 variable.name。如果可能的话。

【问题讨论】:

  • 你不能,至少不是那样。阅读“闭包”,您就会明白为什么这是不可能的。
  • 创建一个容器对象并 look here 指导如何更改您想要的可访问性。非常适用于页面和控件。

标签: javascript variables alert


【解决方案1】:

将“变量”函数视为一个类。将内部变量更改为函数的属性。 (并且不要将函数命名为“变量”,这很恶心)。

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

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

【讨论】:

  • +1 这个构造函数模式似乎是 OP 想要完成的目标
  • 说 snap_func 没有定义。
  • snap_func 正是我编造的 - 您将尝试将任何函数的名称传递给 Variable 方法。
  • 有很多关于javascript构造函数方法的好教程,this being one。您还应该阅读 JS 中的范围 - This was the first google search entry I found。这可以帮助您开始掌握基础知识...
  • 那我怎么称呼'this.name = snap.name();'功能失效了?
【解决方案2】:

您可以删除 var 并使其以这种方式工作。如果你不能这样做,那么创建一个像 getName 这样的新方法并像这样定义它。

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

要调用它,你必须使用 variable.getName();

最好创建一个这样的访问器方法,这样您就可以检查 name 是否包含您可能不想发送的内容。

【讨论】:

  • 鼓励 OP 在窗口对象上设置一个全局变量是不好的做法,因为它可以从任何地方被覆盖,并且代码没有被模块化到它所涉及的区域,它违反了有效的设计基本原则和受控的javascript编码..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多