JavaScriptCore Framework参考文档理解



JavaScriptCore框架允许您从一个基于Objective-C或C程序评估JavaScript程序。它还允许您插入自定义对象JavaScript环境。

      

NSObject: NSObject是大多数Objective-C类层次结构的根类。
JSContext:                  继承NSObject,JSContext对象代表一个JavaScript执行环境。
JSManagedValue:       继承NSObject,JSManagedValue对象封装JSValue对象,添加“条件保留”行为提供自动内存管理的值。
JSValue:                      继承NSObject,JSValue实例参考JavaScript的值。
JSVirtualMachine实例:继承NSObject,JSVirtualMachine实例代表一个独立的JavaScript的执行环境。  

协议

JSExport协议提供了一种声明式的方式输出Objective-C实例类及其实例方法、类方法和JavaScript代码。

其他参考

1、参考JSBase.h
2、参考JSContextRef.h
3、参考JSObjectRef.h
4、参考JSStringRef.h
5、参考JSStringCF.h
6、参考JSValueRef.h


JSContext


        一个JSContext对象代表一个JavaScript执行环境。你创建和使用JavaScript环境评估JavaScript脚本从Objective-C或Swift 代码,访问中定义值或计算在JavaScript中,并使本地对象、方法或访问的JavaScript函数。

创建JavaScript环境

/*!
@method 
@abstract 创建一个 JSContext.
@result一个新的JavaScript环境.(可用iOS7.0及之后)
*/
- (instancetype)init;

/*!
@method
@abstract在指定的虚拟机创建一个JSContext.
@param virtualMachine 虚拟机与它们相关联的新环境.
@result 一个新的JavaScript环境.(可用iOS7.0及之后)
*/
- (instancetype)initWithVirtualMachine:(JSVirtualMachine *)virtualMachine;

评估脚本

/*!
@methodgroup 评估脚本
*/
/*!
@method
@abstract 评估一系列的JavaScript代码.
@param script 用一个字符串包含JavaScript代码来评估.
@result 最后一个值生成脚本.(可用iOS7及之后)
*/
- (JSValue *)evaluateScript:(NSString *)script;


/*!
@method
@abstract评估一个字符串的JavaScript代码和脚本的源文件的URL.
@param script 用一个字符串包含JavaScript代码类评估.
@param sourceURL 脚本的源文件的URL。使用调试器和报告时异常。这些参数只是信息:它不改变行为脚本。
@result 最后一个值生成脚本.(可用iOS8及之后)
*/
- (JSValue *)evaluateScript:(NSString *)script withSourceURL:(NSURL *)sourceURL NS_AVAILABLE(10_10, 8_0);

在运行环境中检查回调状态

/*!
@method
@abstract 得到当前的JSContext执行环境.
@discussion 
@result 当前执行JSContext或如果不存在,nil.(可用iOS7及之后)
*/
+ (JSContext *)currentContext;

/*!
@method
@abstract 得到当前执行的JavaScript函数.
@result 当前执行JScontext或如果不存在,nil.
*/
+ (JSValue *)currentCallee NS_AVAILABLE(10_10, 8_0);

/*!
@method
@abstract 得到这个<code></code>当前执行方法的值。
@result 当前这个<code></code> 的值 or 如果不存在,nil.
*/
+ (JSValue *)currentThis;

/*!
@method
@abstract 得到当前的参数回调函数.
@result 当前参数数组 如果不存在当前回调,nil。
*/
+ (NSArray *)currentArguments;

访问JavaScript全局状态的子脚本

/*!
method
@abstract 得到全局对象上的一个特定属性
@param key
@result JSValue全局对象的属性
*/
- (JSValue *)objectForKeyedSubscript:(id)key;

/*!
method
@abstract 设置全局对象一个特定的属性
@param object
@param key
*/
- (void)setObject:(id)object forKeyedSubscript:(NSObject <NSCopying> *)key;


使用JavaScript全局状态

/*!
@property
@abstract 获得全局对象的上下文
@result 全局对象.
*/
@property (readonly, strong) JSValue *globalObject;

@property
*/
@property (strong) JSValue *exception;

/*!
@property
@property (copy) void(^exceptionHandler)(JSContext *context, JSValue *exception);

/*!
@property
@discussion 所有实例JScontext与单个JSVirtualMachine相关联。
*/
@property (readonly, strong) JSVirtualMachine *virtualMachine;

/*!
@property
@discussion JSContext的名称。当远程调试环境暴露.
*/
@property (copy) NSString *name NS_AVAILABLE(10_10, 8_0);




使用C JavaScriptCore API


/*!
@property
@abstract 获得JSContext得到C API与包装.
@result 这个JSContext相当于C API
*/
@property (readonly) JSGlobalContextRef JSGlobalContextRef;

/*!
@method
@abstract 创建一个JSContext,封装它的C API
@param jsGlobalContextRef
@result JSContext等价于提供JSGlobalContextRef
*/
+ (JSContext *)contextWithJSGlobalContextRef:(JSGlobalContextRef)jsGlobalContextRef;


故事还没结束!

























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u014068781

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值