NodeJS如何使用属性在module.exports中设置另一个属性?

时间:2014-09-04 09:20:32

标签: node.js

module.exports.views = {
  theme: 'themes/theme1/',
  layout: this.theme + 'layout'
};

我希望layout属性依赖于theme属性。但是,运行时,布局属性似乎未定义。我做错了什么?请帮忙......

2 个答案:

答案 0 :(得分:1)

当您运行代码this.theme + 'layout'时,this不会引用您的views对象,但会引用全局对象,而不是theme属性。

这应该有效:

var view = {};
view.theme = 'themes/theme1/';
view.layout = view.theme + 'layout';

module.exports.views = view;

答案 1 :(得分:1)

无法通过符号本身内的对象文字符号来引用正在创建的对象。目前,this指的是窗口,或node.js的全局情况。

您需要使用getter函数返回值。

module.exports.views = {
    theme: 'themes/theme1/',
    layout: function() {
        return this.theme + 'layout';
    }
};

或者你可以把它变成一个构造函数。

module.exports.views = function() {
    this.theme = 'themes/theme1/';
    this.layout = this.theme + 'layout';
};