【问题标题】:JavaScript: Convert string to value of predefined variableJavaScript:将字符串转换为预定义变量的值
【发布时间】:2009-07-29 10:22:14
【问题描述】:

我有一个如下所示的 JavaScript 对象:

venue = function(map, dataSet) {
    // set some constants
    this.VENUE_ID = 0;
    this.VENUE_NAME = 1;
    this.VENUE_CITY = 2;

    this.filterBy = function(field, value) {
        ...
        var filterValue = 'parent.VENUE_' + field;
    }
}

现在,问题是我需要filterValue 的值来包含父对象上常量的值。目前我已经尝试使用上面显示的方法,然后在尝试访问数组项时引用 filterValue,但这只是返回 undefined。

如何将filterValue 变量转换为它所代表的常量的值?

【问题讨论】:

    标签: javascript scope javascript-objects


    【解决方案1】:

    这与变量作用域无关。

    var filterValue = this['VENUE_' + field];
    

    会的。

    【讨论】:

      【解决方案2】:

      JavaScript 没有“父级”的概念。而且我认为您混淆了范围和上下文。如果该方法被编写为 var filterBy() 您必须在不同的“范围”中访问它。但是通过使用“this”,您可以将其保存在与写入相同的对象中。所以你写的一切都是在“这个”上下文中。

      【讨论】:

      • 啊,我明白了!好吧,谢谢你,我不知道。到目前为止,我一直在每个函数的外部手动将父级设置为“this”。我认为原因与使用函数作为回调有关。
      【解决方案3】:

      试试这个:

      var filterValue = this['VENUE_' + field];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-18
        • 2021-08-05
        • 1970-01-01
        • 2014-01-27
        相关资源
        最近更新 更多