Задать вопрос
lightalex
@lightalex

Как задать переменные в области видимости для нового экземпляра класса?

Приветствую!

Есть класс в файле A.js:
class A {
	do() {
		console.log(some_var);
	}
}
module.exports = A;


Есть основной файл index.js:
const A = require('./A');
function print_it(param) {
	let some_var = param;
	let a = new A;
	a.do();
}
print_it('wow'); // В консоли должно вывестись: wow
print_it('123'); // В консоли должно вывестись: 123


Можно ли как-то модифицировать index.js без изменений в A.js, чтобы some_var стал доступен для чтения?
Потому что сейчас разумеется, если это все запустить, выскакивает ошибка "some_var is not defined".
Возможно ли это в JS?
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Сложный Комментировать
Решения вопроса 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
не изобретать граблей, а сделать по простому:
// A.js
class A {
  constructor(some_var) {
    this.some_var = some_var;
  }

  do() {
    console.log(this.some_var);
  }
}
module.exports = A;

// index.js
const A = require('./A');
function print_it(param) {
  const a = new A(param);
  a.do();
}
print_it('wow'); // В консоли должно вывестись: wow
print_it('123'); // В консоли должно вывестись: 123


P.S. snake_case не принят в js, рекомендуется использовать camelCase

UPD:
Вам придется хакнуть модульную систему ноды. Почитать можно в офф доке:
https://nodejs.org/dist/latest-v14.x/docs/api/modu...
https://nodejs.org/dist/latest-v14.x/docs/api/vm.html
Ответ написан
lightalex
@lightalex Автор вопроса
Оставлю это тут. Вдруг кому пригодится.
https://stackoverflow.com/questions/35211056/how-t...

P.S. Спасибо Дмитрий Беляев что подсказал в комментариях к своему ответу наводку на решение моего вопроса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы