【问题标题】:Need help reaching a variable in JavaScript在 JavaScript 中获取变量需要帮助
【发布时间】:2010-12-30 06:54:29
【问题描述】:

谁能帮我理解 JavaScript 变量的独家新闻,以及如何访问它们?

想象一下……

// Namespace declaration
var p = {};

p.result = {

    searchForm: $('#search-form'),
    searchAction: this.searchForm.attr('action'),

    anotherSection: {
        hello: 'Hello ',
        world: this.hello + 'world!'
    }

}

这不起作用,它给出了错误,说this.searchForm 未定义。同样的错误也出现在anotherSection (ofc)。

如何根据同一命名空间内的另一个变量声明一个变量?

【问题讨论】:

    标签: javascript variables namespaces declaration


    【解决方案1】:

    this 关键字绑定到 function-context,你不能在这样的对象字面量中使用它。

    您可以将函数设为“getter”:

    var p = {};
    p.result = {
      searchForm: $('#search-form'),
      getSearchAction: function () {
        return this.searchForm.attr('action');
      },
      anotherSection: {
        hello: 'Hello ',
        getWorld: function () {
          return this.hello + 'world!';
        }
      }
    };
    

    【讨论】:

    • +1 用于编辑和代码示例。我认为这看起来是一个很好的解决方案:)
    • 您可以使用this.getWorld = this.hello + 'world!'; return this.getWorld 对其进行优化,使其仅在第一次调用时连接字符串。
    【解决方案2】:

    在构建对象时无法引用它。

    您需要编写以下内容:

    p.result = {
        searchForm: $('#search-form'),
        anotherSection: {
            hello: 'Hello '
        }
    }
    
    p.result.searchAction = p.result.searchForm.attr('action');
    p.result.anotherSection.world = p.result.anotherSection.hello + 'world!';
    

    【讨论】:

    • +1 谢谢,但这次我会选择 CMS 提供的解决方案。
    【解决方案3】:

    您无法在对象自身的字面量中访问对象的属性——它们还不存在。

    【讨论】:

      【解决方案4】:

      this 是一个对象,因此当您使用 this.searchForm 时,您访问的是 this 对象的属性。你只想访问一个变量,所以你可以使用 searchForm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-05
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        相关资源
        最近更新 更多