本节说明有关使用JavaScript访问Native API的概述。
NativeScript运行时为Android和iOS平台提供隐式类型转换。这个概念被称为Marshalling。例如,NativeScript- iOS平台可以类似地隐式转换JavaScript和Objective-C数据类型,Java /Kotlin可以轻松地映射到JavaScript项目类型和值。
无涯教程可以轻松地将iOS和android数字数据类型转换为JavaScript数字。从iOS到JavaScript的简单数字转换定义如下-
console.log(`max(7,9)=${max(7,9)}`);
本机的max()函数将转换为JavaScript号。
Java支持不同的数字类型,例如字节,短整数,整数,浮点数,双精度和长整数。 JavaScript只有数字类型。
考虑下面显示的简单Java类-
class Demo extends java.lang.Object { public int maxMethod(int a,int b) { if(a>b) { return a; } else { return b; } } }
上面的代码包含两个整数参数。可以使用JavaScript调用上述代码对象,如下所示-
//Create an instance for Demo class var obj=new Demo(); //implicit integer conversion for calling the above method obj.maxMethod(7,9);
Android字符串在java.lang.string中定义,而iOS字符串在NSSring中定义。看看如何在两个平台上执行编组。
字符串是不可变的,但字符串缓冲区支持可变字符串。
以下代码是简单映射的示例-
//创建 android 标签小部件 var label = new android.widget.Label(); //创建 JavaScript 字符串 var str = "Label1"; //Convert JavaScript string into java label.setText(str); // text is converted to java.lang.String
布尔类在java.lang.Boolean中定义。此类将布尔值包装在对象中。可以轻松地将布尔值转换为字符串,反之亦然。简单的例子定义如下-
//创建java字符串 let data = new java.lang.String('NativeScript'); //将 java 字符串映射到 JavaScript 字符串, let result = data.startsWith('N'); //返回结果 console.log(result);// true
NSString类是不可变的,但其子类NSMutableString是不可变的。此类包含使用字符串的方法的集合。它声明如下-
class NSString : NSObject
考虑一个简单的Objective-C声明,如下所示-
NSString *str = @"nativescript"; //将字符串转换为大写 NSString *str1; str1 = [str uppercaseString]; NSLog(@"Uppercase String : %@\n", str1 );
NSStrings可以轻松地映射到JavaScript字符串。
本节说明如何在数组中执行编组。首先以iOS环境为例。
class NSArray : NSObject
NSArray用于管理称为数组的对象的有序集合。它用于创建静态数组。它的子类 NSMutableArray 用于创建动态数组。
考虑可以使用数组文字创建NSArray对象,如下所示-
let array: NSArray=["React","Vue","TypeScript"]
现在,可以将该数组映射到JavaScript中,如下所示-
//create native array let nsArr = NSArray.arrayWithArray("React","Vue","TypeScript"]); //create simple javascript array let jsArr = ["Hello,World","NativeScript"]; //Now compare the two arrays, let compare = nsArr.isEqual(jsArr); console.log(comapre);
这将返回输出为false。
Java数组在 java.util.Arrays 中定义。此类包含用于操纵数组的各种方法。一个例子如下所示-
//javascript array let data = [12,45,23,56,34,78,50]; //create java array let result = ns.example.Math.maxElement(data); console.log(result);
类和对象是面向对象编程的基本概念。类是用户定义的原型。对象是类的实例。类表示一种类型的所有对象共有的一组属性或方法。让无涯教程了解两种移动开发环境的本机类和对象。
Java和Kotlin类具有由完整软件包名称表示的唯一标识符。
例如,
android.view.View -这是用于屏幕布局和与用户交互的基本用户界面类。可以在JavaScript中访问此类,如下所示-
const View=android.view.View;
首先,无涯教程使用以下语句导入类-
import android.view.View;
接下来创建一个如下所示的类-
public class MyClass { public static void staticMethod(context) { //create view instance android.view.View myview = new android.view.View(context); } }
在以上相同的类中,可以使用以下代码访问JavaScript函数-
const myview=new android.view.View(context);
同样,可以访问java.lang包中的接口,常量和枚举。
在两节@interface和@implementation中定义了Objective-C类。类定义以关键字 @interface 开头,后跟 interface(class)名称。在Objective-C中,所有类都是从称为NSObject的基类派生的。
它是所有Objective-C类的超类。简单Circle类的定义如下所示-
@interface Circle:NSObject { //Instance variable int radius; } @end
考虑使用一种方法的类,如下所示-
@interface MyClass : NSObject + (void)baseStaticMethod; @end
可以使用以下代码将此类转换为javascript-
function MyClass() { /* native call */ }; Object.setPrototypeOf(MyClass, NSObject); BaseClass.baseStaticMethod=function () { /* native call */ };
JavaScript instanceof 运算符用于验证对象是否从给定的类继承。这可以定义为-
var obj=MyClass.alloc().init(); // object creation console.log(obj instanceof NSObject); //return true
使用alloc,init或new方法创建Objective-C实例。在上面的示例中,无涯教程可以使用以下新方法轻松创建对象初始化-
var obj=MyClass.new();
同样,您可以访问静态方法和属性。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)