将`this`应用于函数auto中的变量

时间:2018-09-12 03:14:59

标签: javascript

我想解析动态函数,并将this应用于自动函数中的变量。

var functionContent = "console.log(v)";
var context = {v:'show some thing'}
(new Function(functionContent)).apply(context);

已解析的函数将引发有关找不到v的错误。如果我改用console.log(this.v),一切都会好的。但是为了获得更好的最终用户体验,我不想在this中使用functionContext。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您要使用JavaScript术语执行的操作称为绑定。您正在将另一个功能的功能范围设置为对象。

app.route

与其他答案一样,我也想说这不是一件好事。 new Function实际上确实在后台使用eval,基本上只是

var ctx  = {v:'show some thing'};
var newFunction = (new Function("console.log(this.v)")).bind(ctx);
newFunction();

是否要摆脱它,这取决于您。如果它在更广泛的Internet上使用并加载了一些人们可以编辑的数据...那么是的,这可能是个问题,但是如果它只是一个很小的问题,那就不那么了。