我正在使用JavaScriptCore与Objective-C代码进行交互
JSValue中没有isFunction方法,但我想检查JSValue是否是JS函数并从Objective-C调用它
答案 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 ]];