JavaScript 与 Native交互(包括ReactNative)

一. 概念JavaScriptCore框架 是苹果在iOS7引入的框架,该框架让 Objective-C 和 JavaScript 代码直接的交互变得更加的简单方便。 JavaScriptCore框架 其实就是基于 webkit 中以C/C++实现的JavaScriptCore 的一个包装二. JavaScriptCore框架常用类JSContext: JS运行的环境, ...
摘要由CSDN通过智能技术生成

一. 概念

JavaScriptCore框架 是苹果在iOS7引入的框架,该框架让 Objective-C 和 JavaScript 代码直接的交互变得更加的简单方便。
JavaScriptCore框架 其实就是基于 webkit 中以C/C++实现的JavaScriptCore
的一个包装

二. JavaScriptCore框架常用类

  1. JSContext: JS运行的环境, 为JS代码的执行提供了上下文环境, 并且通过JSContext获取JS的数据
  2. JSValue: 用于接受JS中获取的数据类型, 可以使对象, 方法
  3. JSManagedValue: 用来包装JSValue对象
  4. JSVirtualMachine: JavaScript虚拟机, 每一个JavaScript上下文(也就是一个JSContext对象)归属于一个虚拟机。每一个虚拟机可以包含多个不同的上下文,而且可以在不同的上下文之间传值(JSValue对象)。但是,每一个虚拟机都是独立的——你不能将在一个虚拟机中创建的值传到另一个虚拟机的一个上下文中
  5. JSExport: protocol,如果JS对象想直接调用OC对象里面的方法和属性,那么这个OC对象需要实现这个JSExport协议
js OC type 转换
Objective-C type JavaScript type
nil undefined
NSNull null
NSString string
NSNumber number, boolean
NSDictionary Object object
NSArray Array object
NSDate Date object
NSBlock (1) Function object (1)
id (2) Wrapper object (2)
Class (3) Constructor object (3)

三. JS 和 OC 互调

必须创建JS运行环境

1. OC调用JS

本质: JS代码中已经定义好变量和方法, 用过OC去获取, 并且调用
步骤:
1. 创建JS运行环境
2. 执行JS代码
3. 获取JS数据(变量, 方法)
4. 使用JS数据, 方法

变量的调用
    JSContext *context = [[JSContext alloc] init];

    NSString *jsCode = @"let arr = [1, 2, 3]";
    [context evaluateScript:jsCode];

    // 只有执行JS代码才能获取数据
    // 变量定义在JS中, 所以直接通过JSContext获取, 根据变量名称获取, 相当于字典的key
    JSValue *reJsValue = context[@"arr"];
    NSLog(@"%@", reJsValue);   // 1,2,3

    // 修改JS的值
    reJsValue[0] = @9;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值