Javascript 解析方法并返回结果
在这个场景中,我有一个计算字符串的函数。我的问题是,这种方法不起作用Javascript 解析方法并返回结果,javascript,Javascript,在这个场景中,我有一个计算字符串的函数。我的问题是,这种方法不起作用 JSON.stringify()无法stringify方法,所以我在这里使用这个替换函数 不幸的是,当我尝试执行函数时,它是一个字符串 让obj={ 姓名:“Max”, 测试(){ 返回“酷”; } } 函数解析字符串(str,obj){ 让变量=Object.keys(obj.join(“,”); 让strData=JSON.stringify(obj,函数(键,值){ 如果(值的类型==“函数”){ 返回值.toStri
JSON.stringify()
无法stringify方法,所以我在这里使用这个替换函数
不幸的是,当我尝试执行函数时,它是一个字符串
让obj={
姓名:“Max”,
测试(){
返回“酷”;
}
}
函数解析字符串(str,obj){
让变量=Object.keys(obj.join(“,”);
让strData=JSON.stringify(obj,函数(键,值){
如果(值的类型==“函数”){
返回值.toString();
}否则{
返回值;
}
});
返回新函数(`let{${variables}}=${strData};return${str};`)。调用(
obj
);
}
log(parseString(“name”,obj))//预期产出:“最大”
log(parseString(“test()”,obj))//预期输出:“酷”
让obj={
姓名:“Max”,
测试(){
返回“酷”;
}
}
函数解析字符串(str,obj){
让变量=Object.keys(obj.join(“,”);
让strData=JSON.stringify(obj,函数(键,值){
如果(值的类型==“函数”){
返回值();
}否则{
返回值;
}
});
返回新函数(`let{${variables}}=${strData};return${str};`)。调用(
obj
);
}
log(parseString(“name”,obj))//预期产出:“最大”
log(parseString(“test”,obj))//预期输出:“酷”
让obj={
姓名:“Max”,
测试(){
返回“酷”;
}
}
函数解析字符串(str,obj){
让变量=Object.keys(obj.join(“,”);
让strData=JSON.stringify(obj,函数(键,值){
如果(值的类型==“函数”){
返回值.toString();
}否则{
返回值;
}
});
返回新函数(`let{${variables}}=${strData};return${str};`)。调用(
obj
);
}
log(parseString(“name”,obj))//预期产出:“最大”
log(parseString(“obj.test()”,obj))//预期输出:“酷”
您非常接近。你刚刚犯了两个小错误。在控制台中调用函数时,只需使用test
而不是test()
。另一个是,当值的类型是函数时,您需要将该值作为函数调用,如value().toString()
,而不是value.toString()
。代码的其余部分是完美的
让obj={
姓名:“Max”,
测试(){
返回“酷”;
}
}
函数解析字符串(str,obj){
让变量=Object.keys(obj.join(“,”);
让strData=JSON.stringify(obj,函数(键,值){
如果(值的类型==“函数”){
返回值().toString();//将值更改为值()
}否则{
返回值;
}
});
返回新函数(`let{${variables}}=${strData};return${str};`)。调用(
obj
);
}
log(parseString(“name”,obj))//预期产出:“最大”
log(parseString(“test”,obj));//将test()更改为test
JSON用于纯数据。它是一种独立于语言的序列化格式,将代码放入其中是没有意义的。