节点模块作为getters和setters提供

Node module provide as getters & setters

本文关键字:setters 提供 getters 模块 节点      更新时间:2023-09-26

我有以下代码工作正常。现在我需要添加其他属性和函数并导出它们,建议如何做?假设我有两个函数和两个需要导出的附加属性。

属性类似是有效的道具1

var internal = require("../plu/internal");
module.exports = {isAvailable: false};
internal.eventEmitter.on('AppA', function () {
    module.exports.isAvailable = 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 方法扩展基本对象原型。

这是一种简单直接的方法。如果我误解了,请纠正我。这将为需要此文件的每个人公开 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;