4

我将如何在对象本身中引用 JavaScript 哈希键?例如,我希望能够真正使用“主题”键。我会使用“this”来引用“主题”吗?

window.EXAMPLE = {
config : {
    theme: 'example',
    image_path: '/wp-content/themes/' + this.theme + '/img/',
}
}
4

4 回答 4

7

您可以使用一种方法:

window.EXAMPLE = {
    config : {
        theme: 'example',
        image_path: function () {
            return '/wp-content/themes/' + this.theme + '/img/';
        },
    }
}

当然,那么您必须通过以下方式访问它EXAMPLE.config.image_path()

您可能不应该在window任何一个上定义事物,而只使用当前范围。

于 2013-03-12T01:19:36.157 回答
3

唯一的方法是使用函数:

例如

windows.EXAMPLE {
  config : {
    theme: 'blah', 
    image_path: function () { return '/path/to' + this.theme } 
  } 
} 
于 2013-03-12T01:19:34.447 回答
2

Without using a function, you have to split it into two separate assignments:

window.EXAMPLE = {
    config : {
        theme: 'example'
    }
};
window.EXAMPLE.config.image_path = '/wp-content/themes/' + window.EXAMPLE.config.theme + '/img/';
于 2013-03-12T01:23:30.453 回答
1

在构造一个对象时(不是像 Kyle 的示例所给出的那样一旦创建),我认为不可能访问该对象的属性,因为它还不“存在”,除非您使用函数或一些花哨的东西。

我也认为没有理由这样做,因为您可以只输入"example"image_path,也可以在定义之前创建一个变量以充当“配置”常量:

var CONF_THEME = 'example';
window.EXAMPLE = {
    config : {
        theme: CONF_THEME,
        image_path: '/wp-content/themes/' + CONF_THEME + '/img/'
    }
}
于 2013-03-12T01:21:28.093 回答