Javascript 从字符串调用函数的正确方法是什么?

Javascript 从字符串调用函数的正确方法是什么?,javascript,Javascript,是否可以执行以下操作: // Response from an API as a string, that contains a function to call. const stringFunc = 'myFunc({"Status":200,"Message":"This is a message"})'; function myFunc(obj) { console.log(obj); } function callBack(stringFn) { return Functi

是否可以执行以下操作:

// Response from an API as a string, that contains a function to call.
const stringFunc = 'myFunc({"Status":200,"Message":"This is a message"})';

function myFunc(obj) {
  console.log(obj);
}

function callBack(stringFn) {
  return Function.prototype.call(stringFn);
}

callBack(stringFunc);
控制台日志:

{"Status":200,"Message":"This is a message"}
它似乎工作得很好,但想知道这是否是正确的方式进行这一切?是否有更好的方法或不可预见的影响

感谢使用方法


const stringFunc='myFunc({“Status”:200,“Message”:“This is a Message”});
函数myFunc(obj){
控制台日志(obj);
}
函数回调(stringFn){
返回函数.prototype.call(stringFn);
}
eval(stringFunc);
使用方法


const stringFunc='myFunc({“Status”:200,“Message”:“This is a Message”});
函数myFunc(obj){
控制台日志(obj);
}
函数回调(stringFn){
返回函数.prototype.call(stringFn);
}
eval(stringFunc);

作为
eval
的替代方法,您可以使用
函数
构造函数:

const stringFunc = 'myFunc({"Status":200,"Message":"This is a message"})';

function myFunc(obj) {
  console.log(obj);
}

const payloadFunc = new Function(stringFunc);
payloadFunc() //logs the object

作为
eval
的替代方法,您可以使用
函数
构造函数:

const stringFunc = 'myFunc({"Status":200,"Message":"This is a message"})';

function myFunc(obj) {
  console.log(obj);
}

const payloadFunc = new Function(stringFunc);
payloadFunc() //logs the object

看起来您也可以使用eval调用函数:看起来您也可以使用eval调用函数:但是为什么您仍然有callback()函数?如果使用eval()则不需要,对吗?如果您打算调用myFunc Only,则不需要回调注意,使用eval()或使用任何其他方式从字符串执行代码是一个严重的安全问题。当字符串来自不受信任的源时,攻击者可以在网页上下文中执行任何操作。你不应该这样做。但是为什么你仍然有callback()函数呢?如果使用eval()则不需要,对吗?如果您打算调用myFunc Only,则不需要回调注意,使用eval()或使用任何其他方式从字符串执行代码是一个严重的安全问题。当字符串来自不受信任的源时,攻击者可以在网页上下文中执行任何操作。你不应该那样做。