NodeJS如何使用一个属性来设置module.exports中的另一个属性?
问题描述:
module.exports.views = {
theme: 'themes/theme1/',
layout: this.theme + 'layout'
};
我想布局属性取决于主题属性。但是,运行时,布局属性似乎是未定义的。我做错了什么?请帮助...NodeJS如何使用一个属性来设置module.exports中的另一个属性?
答
这是不可能来指代对象从符号本身通过对象的文字符号被创建。此刻,this
指向window.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';
};
答
当你运行该代码this.theme + 'layout'
,this
并不指的是你views
对象,但它指的是全局对象,它因为没有theme
财产。
这应该工作:
var view = {};
view.theme = 'themes/theme1/';
view.layout = view.theme + 'layout';
module.exports.views = view;
谢谢..它工作完美..我很好奇,但表现..哪一种更有效?这个答案或下面的答案@pomeh ...只是想知道.. – Melvin 2014-09-04 09:44:52