可以执行以下操作:
// 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"}
它似乎工作得很好,但想知道这是否是正确的方法来解决这个问题?有没有更好的方法或不可预见的含义?
由于
答案 0 :(得分:1)
使用eval方法。
<!DOCTYPE html>
<html>
<body>
<script>
const stringFunc = 'myFunc({"Status":200,"Message":"This is a message"})';
function myFunc(obj) {
console.log(obj);
}
function callBack(stringFn) {
return Function.prototype.call(stringFn);
}
eval(stringFunc);
</script>
</body>
</html>
答案 1 :(得分:1)
作为eval
的替代方案,您可以使用Function
构造函数:
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