我正在尝试使用字符串作为函数的一部分。

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”

我检查了这个答案:Convert a string to a function, gives ReferenceError,它可以正常工作,但是我需要将import1或2作为字符串传递。

感谢所有帮助!

最佳答案

为什么不使用对象访问功能?



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();

关于javascript - 在函数ReferenceError中使用字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59768174/

10-12 00:06