2016-01-19 4 views
1

У меня есть следующий код, который работает нормально. Теперь мне нужно добавить дополнительные свойства и функции и экспортировать их, Как это рекомендуется? позволяет сказать, что у меня есть две функции и два дополнительных свойства, которые мне нужно экспортировать.Модуль узла в качестве геттеров и сеттеров

свойства, такие как IsValid prop1

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

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

Если у вас есть значение по умолчанию для всех, вы можете просто сделать это '' 'module.exports = {isAvailable: false, something:" Hello ", somethingElse:" Hullo "};' '', а затем у вас есть сборщики событий – magnudae

+0

Вы хотите расширить существующий класс? Это ваше намерение? – Pho3nixHun

+0

Вы хотите экспортировать функции setter и getter в качестве свойств экспортируемого объекта/модуля? –

ответ

1

Стандартный способ, определенные установки и получения методов на объекте является использование метода Object.defineProperty внутри internal модуля. При экспорте модуля internal вы также экспортируете методы setter и getter.

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 вы расширяете базовый объект-прототип с установки и получения методов.

+0

спасибо 1+, так что в этом случае, как бы вы экспортировали какую-то функцию? –

+0

Функции - это свойства объекта в javascript, поэтому, если вы определяете методы setter и getter, как в моем примере выше, как только вы экспортируете свой модуль, вы также переносите эти методы в экспортируемый объект. Затем вы можете ссылаться на них без создания экземпляра объекта. –

0

Это простой прямой путь. Поправьте меня, если я неправильно понял. Это разоблачит геттеры и сеттеры для всех, кто нуждается в этом файле. Если вы не хотите испускать изменения, когда они происходят, и только тогда это может быть не ответом.

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

Используйте нижеприведенный код, если он может решить вашу проблему?

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

Спасибо, но здесь вы много раз ставили экспорт, чтобы отправить его как объект со всеми свойствами? –

Смежные вопросы