我有一个执行以下操作的脚本:
var context = {}
vm.runInNewContext("var someFunc = function() {}", context);
console.log(typeof context.someFunc); //function
console.log(context.someFunc instanceof Function); //false
我明白为什么第 4 行返回 false:在新上下文中有一个新Function
对象,它不等于Function
外部上下文中的对象。因此,context.someFunc
不是该外部Function
对象的实例。
但是,该context.someFunc
函数由使用instanceof Function
. 由于context.someFunc
是一个函数,但不是Function
该上下文中的实例,因此第三方不会将其视为函数,因此它应该崩溃。我尝试使用以下上下文:
var context = {
"Function" : Function
}
但这也没有解决我的问题。
也许 usingvar someFunc = new Function(arg, body)
会起作用(尚未测试),但是我无法完全控制传递给的代码vm.runInNewContext
,因此我也无法使用该解决方案。
如何让context.someFunc instanceof Function
在上下文之外返回 true?