Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Изменение значения переменной в другом модуле (https://javascript.ru/forum/node-js-io-js/69562-izmenenie-znacheniya-peremennojj-v-drugom-module.html)

davisaliw 03.07.2017 14:36

Изменение значения переменной в другом модуле
 
Добрый день, возникла проблема:
есть 1 скрипта и модуль:
  • папка/script.js
  • папка/node_modules/window/index.js

Содержимое основного(script.js):

Код:

var window = require("window");
window.setActiveElement("setok");
console.log(window.activeElement ); // в консоли должно быть OK
window.setActiveElement("setbad");
console.log(window.activeElement ); // в консоли должно быть BAD


Содержимое модуля window(index.js):

Код:

var aElement = '';

function setActiveElement(a){
        aElement = (a == "setok") ? 'OK' : 'BAD';
        };
       
module.exports.setActiveElement = setActiveElement;
module.exports.activeElement = aElement;

Но после выполнение в консоли получается просто 2 пустых строчки :-E

Alexandroppolus 03.07.2017 14:50

Ну всё правильно, в
module.exports.activeElement

была присвоена пустая строка, и такой осталась.

сделай так:
module.exports.getActiveElement = function() { return aElement; };


вызывай console.log(window.getActiveElement());

davisaliw 03.07.2017 15:22

Цитата:

Сообщение от Alexandroppolus (Сообщение 457356)
Ну всё правильно, в
module.exports.activeElement

была присвоена пустая строка, и такой осталась.

сделай так:
module.exports.getActiveElement = function() { return aElement; };


вызывай console.log(window.getActiveElement());

да, спасибо, понял
это работает

Yо как можно сделать чтобы конкретно window.activeElement выдавало значение? без функций :(

Alexandroppolus 03.07.2017 17:02

Цитата:

Сообщение от davisaliw
как можно сделать чтобы конкретно window.activeElement выдавало значение? без функций

создать свойство:
Object.defineProperty(module.exports, 'activeElement', {
  get: function() {
    return aElement;
  }
});


будет стильно, современно, молодёжно и по-хипстерски )

davisaliw 04.07.2017 17:40

спасибо большое, то что нужно


Часовой пояс GMT +3, время: 04:10.