Node.js模块getter显示未定义

时间:2017-01-19 19:37:03

标签: javascript node.js

我正在尝试创建一个当前有一个getter的设置类,它看起来像这样:

class Settings {
    get domain() { return 'http://example.com'; }
}
module.exports.Settings = Settings;

在另一个文件中,我尝试加载它并显示getter的值,如下所示:

const Settings = require('./Settings');
console.log(Settings.domain);

当我运行该应用时,我的console.log()会打印undefined。我不确定为什么会这样做。我忘了做某事吗?

2 个答案:

答案 0 :(得分:1)

定义类似的类时,class块中列出的所有属性都附加到类的原型Settings本身实际上是一个功能;你可以把它想象成一个构造函数。

原型上的domain getter将在Settings实例上提供,但它没有附加到函数对象Settings本身

您可以通过两种方式访问​​它:

// create an instance of Settings
var settings = new Settings();
console.log(settings.domain);   // => 'http://example.com'

// access Settings' prototype directly
console.log(Settings.prototype.domain);   // => 'http://example.com'

也可以将domain getter定义为static,这意味着它应该在类函数本身而不是原型上可用:

// static getter
class Settings {
    static get domain() { return 'http://example.com'; }
}

console.log(Settings.domain);   // => 'http://example.com'

答案 1 :(得分:1)

这是我做的:

const Settings = require('./test').Settings;
const set = new Settings();

console.log(set.domain);

或者在你的情况下:

first_open