javascript - 解析方法并返回结果
问题描述
我有这种情况,我有一个评估字符串的函数。我遇到的问题是这不适用于方法。
JSON.stringify()
无法对方法进行字符串化,所以我在这里使用这个替换函数。
不幸的是,当我尝试执行它时,该函数是一个字符串。
let obj = {
name: "Max",
test() {
return "cool";
}
}
function parseString(str, obj) {
let variables = Object.keys(obj).join(",");
let strData = JSON.stringify(obj, function(key, value) {
if (typeof value === "function") {
return value.toString();
} else {
return value;
}
});
return new Function(`let {${variables}} = ${strData}; return ${str}; `).call(
obj
);
}
console.log(parseString("name", obj)); //expected output: "max"
console.log(parseString("test()", obj)); //expected output: "cool"
有没有办法执行函数并返回结果?一些解决方法?
解决方案
let obj = {
name: "Max",
test() {
return "cool";
}
}
function parseString(str, obj) {
let variables = Object.keys(obj).join(",");
let strData = JSON.stringify(obj, function(key, value) {
if (typeof value === "function") {
return value();
} else {
return value;
}
});
return new Function(`let {${variables}} = ${strData}; return ${str}; `).call(
obj
);
}
console.log(parseString("name", obj)); //expected output: "max"
console.log(parseString("test", obj)); //expected output: "cool"