【发布时间】:2012-11-07 15:40:00
【问题描述】:
我有一个这样的脚本:
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
}
但这也没有解决我的问题。
也许使用var someFunc = new Function(arg, body) 会起作用(尚未测试),但是我无法完全控制传递给vm.runInNewContext 的代码,因此我也无法使用该解决方案。
如何让context.someFunc instanceof Function 在上下文之外返回 true?
【问题讨论】:
标签: node.js instanceof