Используйте строку в функции, ReferenceError - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь использовать строку как часть функции.

const import1 = require('./import1');
const import2 = require('./import2');

//on above files there is a method, let's call it method1.

const string = "import1"; // or could be "import2"

//I would like to use above string as code.

//This is what I tried:

const functionToUse = new Function(string + ".method1()");
functionToUse();

Это ошибка, которую я получаю: «ReferenceError: import1 не определен»

Я проверил этот ответ : Преобразование строки в функцию, выдача ReferenceError , и она вроде как работает, но мне нужно передать import1 или 2 в виде строки.

Вся помощь действительно приветствуется!

Ответы [ 2 ]

1 голос
/ 16 января 2020

почему бы не использовать объект для доступа к функции?

const import1 = { method: function() { alert('method!'); } }; //require('./import1');
const import2 = { method2: function() {alert('method2'); } }; // require('./import2');


// Add link to both objects

window.myImports = { import1, import2 };
const string = "import1";
const functionToUse = getFunction(string + ".method");

function getFunction(path) {
  const parts = path.split('.');
  let obj = window.myImports;
  
  for(let part of parts) {
    obj = obj[part];
  }
  
  return obj;
}

functionToUse();
0 голосов
/ 16 января 2020

Ошибка в вашем заявлении на импорт. В противном случае проблем с вызовом функции не возникает.

let string1 = "hello";
var functionCalls = (string)=>{ 
	console.log("string inside function", string);
}
functionCalls(string1);

Вы можете проверить пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...