我使用的JavaScriptCore与Objective-C代码交互如何检查是否JSValue是一个功能
有一个在JSValue没有isFunction方法,但我想检查是否JSValue是JS功能,并调用它from Objective-C
我使用的JavaScriptCore与Objective-C代码交互如何检查是否JSValue是一个功能
有一个在JSValue没有isFunction方法,但我想检查是否JSValue是JS功能,并调用它from Objective-C
我最终注入少量的JavaScript代码返回typeof
[context evaluateScript:@"function is(obj){ return typeof obj }"];
JSValue *is = [[context globalObject] valueForProperty:@"is"];
JSValue *type = [is callWithArguments:@[ is ]];
结果
看起来像没有办法检查。你只能检查你的函数是否是一个对象(并且在JS函数中是对象)。
根据文档,如果该值不能被视为JavaScript函数,则-[JSValue callWithArguments:]
返回nil
。如果一个JS函数没有显式地返回一个值,那么它隐含地返回JavaScript值undefined
。所以,看起来你可以简单地尝试调用JS函数并处理该案例,如果它返回nil
。