2014-09-04 2 views
0
module.exports.views = { 
    theme: 'themes/theme1/', 
    layout: this.theme + 'layout' 
}; 

Я хочу, чтобы свойство макета зависело от свойства темы. Однако при запуске свойство макета кажется неопределенным. Что я сделал не так? Пожалуйста, помогите ...NodeJS Как использовать свойство для установки другого свойства в module.exports?

ответ

1

Это не представляется возможным ссылаться на объект создается с помощью литерала объекта нотации внутри самой нотации. В настоящий момент относится к окну или глобальному в случае node.js.

Вам нужно будет вернуть значение с помощью функции геттера.

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'; 
}; 
+0

Спасибо .. он работал отлично .. Мне любопытно, хотя о производительности .. Что более эффективно? этот ответ или ответ ниже @pomeh ... просто интересно .. – Melvin

1

При запуске кода this.theme + 'layout', this не относится к вашему views объекта, но это относится к глобальному объекту, который, как не theme собственности.

Это должно работать:

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

module.exports.views = view; 
Смежные вопросы