节点模块提供 getters 和 setters

Node module provide as getters & setters

我有以下代码可以正常工作。 现在我需要添加额外的属性和函数并将它们导出, 建议怎么做? 假设我有两个函数和两个附加属性需要导出。

像这样的属性 已验证 道具 1

var internal = require("../plu/internal");
module.exports = {isAvailable: false};

internal.eventEmitter.on('AppA', function () {
    module.exports.isAvailable = true;
});

这是一种简单直接的方法。如果我误解了,请纠正我。 这将为需要此文件的每个人公开 getter 和 setter。 除非您想在更改发生时发出更改,然后这可能不是答案。

var available = false;
module.exports = {
  getAvailable: getAvailable,
  setAvailable: setAvailable
}
function getAvailable() { return available;}
function setAvailable(avail) { available = avail;}

使用下面的代码,是否可以解决您的问题?

var exports = module.exports = {};

var internal = require("../plu/internal");

exports.isAvailable = false;

internal.eventEmitter.on('AppA', function () {
    exports.isAvailable = true;
});

exports.myTestFunc = function () {
     return "Hello Test";
}

exports.testProperty = true;

在对象上定义 setter 和 getter 方法的标准方法是在 internal 模块中使用 Object.defineProperty 方法。通过导出 internal 模块,您也将导出 settergetter 方法。

Object.defineProperty(Internal.prototype, "isAvailable", {
    get : function(){
        return this.available;
    },
    set : function(value){
        this.available = value;
    }
});

或者在 ES6 中你可以写同样的东西:

get isAvailable() {
    return this.available;
}

set isAvailable(value) {
    this.available = value;
}

使用 Internal.prototype,您将使用 setter 和 getter 方法扩展基础对象原型。