如何检查JSValue是否是一个函数

时间:2017-04-15 11:54:48

标签: objective-c javascriptcore

我正在使用JavaScriptCore与Objective-C代码进行交互

JSValue中没有isFunction方法,但我想检查JSValue是否是JS函数并从Objective-C调用它

2 个答案:

答案 0 :(得分:0)

看起来没有办法检查。您只能检查您的函数是否为对象(在JS函数中是对象)。

根据文档,-[JSValue callWithArguments:]如果值不能被视为JavaScript函数,则返回nil。如果JS函数没有显式返回值,则它隐式返回JavaScript值undefined。所以,看起来你可以简单地尝试调用JS函数并处理它返回nil的情况。

答案 1 :(得分:0)

我最后注入一个小的javascript代码来返回typeof

的结果
[context evaluateScript:@"function is(obj){ return typeof obj }"];
JSValue *is = [[context globalObject] valueForProperty:@"is"];
JSValue *type = [is callWithArguments:@[ is ]];