diff --git a/zh-cn/application-dev/napi/jsvm-data-types-interfaces.md b/zh-cn/application-dev/napi/jsvm-data-types-interfaces.md index 138e36c7d01137e529540999775fc8a9ae0f272b..eb31bc31270f9ede3b173a12321a4459be162041 100644 --- a/zh-cn/application-dev/napi/jsvm-data-types-interfaces.md +++ b/zh-cn/application-dev/napi/jsvm-data-types-interfaces.md @@ -199,7 +199,7 @@ typedef enum { 当 id 为 JSVM_COMPILE_CODE_CACHE 时,content 的类型: - cache : 指向 code cache 的指针。 -- length : code cache 的大小。 +- length : 代表 code cache 的大小。 ```c typedef struct { diff --git a/zh-cn/application-dev/napi/use-jsvm-about-array.md b/zh-cn/application-dev/napi/use-jsvm-about-array.md index 6d5f26290ef4502c3593c94304ffdb9f25dd0183..80c14b858bed8fa23f78ca6f2a95218f1b478847 100644 --- a/zh-cn/application-dev/napi/use-jsvm-about-array.md +++ b/zh-cn/application-dev/napi/use-jsvm-about-array.md @@ -2,15 +2,15 @@ ## 简介 -使用 JSVM-API 接口进行数组(array)相关开发时,调用相关接口可以在 JSVM 模块中直接操作和处理 JavaScript 中的数组。 +使用JSVM-API接口进行数组(array)相关开发时,在JSVM模块中可以调用相关接口直接操作和处理 JavaScript 中的数组。 ## 基本概念 -使用 JSVM-API 接口进行数组(array)相关开发时,涉及的基本概念主要包括数组的创建、访问、修改、遍历以及与数组相关的操作。这些概念对于理解在 JSVM 模块中如何与 JavaScript 数组交互非常重要。以下是一些关键概念: +使用 JSVM-API 接口进行数组(array)相关开发时,涉及的基本概念主要包括数组的创建、访问、修改、遍历以及与数组相关的操作。这些概念对于理解在 JSVM 模块中与 JavaScript 数组交互非常重要。以下是一些关键概念: -- **数组的创建**:若在 JSVM 模块中需要创建一个新的 JavaScript 数组,可以使用提供的 OH_JSVM_CreateArray 接口创建数组,将数组传递给 JavaScript 层。 -- **数组相关操作**:在 JSVM 模块中通过对应的接口获取 JavaScript 数组的长度、检索指定索引处的元素以及设置指定索引处的元素值,从而实现 JSVM 模块与 JavaScript 数组的交互。 -- **TypedArray**:JavaScript 中的 TypedArray 是一种用来描述二进制数据的类数组数据视图,可以简单理解为一种指定元素类型的数组,TypedArray 没有直接构造器,但是可以用它的子类构造器构造 TypedArray 类型的数据。TypedArray 的子类有:Int8Array、Uint8Array、Uint8ClampedArray、Int16Array、Int32Array 等。 +- **数组的创建**:若在 JSVM 模块中需要创建新的 JavaScript 数组时,可以使用提供的 OH_JSVM_CreateArray 接口创建数组,将传递给 JavaScript 层。 +- **数组相关操作**:在 JSVM 模块中通过对应的接口获取 JavaScript 数组的长度、检索指定索引处的元素、设置指定索引的元素值,从而实现 JSVM 模块与 JavaScript 数组的交互。 +- **TypedArray**:JavaScript 中的 TypedArray 是一种类数组数据视图,用于描述二进制数据。它可以视为指定元素类型的数组,TypedArray 没有直接构造器,但是可以通过其子类构造器构造创建。子类包括:Int8Array、Uint8Array、Uint8ClampedArray、Int16Array、Int32Array等。 - **ArrayBuffer**:ArrayBuffer 是固定长度的二进制数据缓冲区。 - **DataView**:DataView 是 JavaScript 中的一种视图,是可以从 ArrayBuffer 对象中读写多种数值类型的底层接口。 @@ -21,7 +21,7 @@ | ---------------------------- | ------------------------------------------ | |OH_JSVM_CreateArray | 创建一个新的 JavaScript 数组对象 | |OH_JSVM_CreateArrayWithLength | 创建一个指定长度的 JavaScript 数组对象 | -|OH_JSVM_CreateTypedarray | 在现有的 ArrayBuffer 上创建一个 JavaScript TypedArray 对象,TypedArray 对象在底层数据缓冲区上提供类似数组的视图,其中每个元素都具有相同的底层二进制标量数据类型。需要注意,对于入参有以下要求:(length * size_of_element) + byte_offset 要不大于传入数组的大小(以字节为单位),size_of_element 指数组中元素的数据类型的大小,否则会引发 RangeError 异常。| +|OH_JSVM_CreateTypedarray | 在现有的 ArrayBuffer 上创建 JavaScript TypedArray 对象,TypedArray 对象在底层数据缓冲区上提供类似数组的视图,其中每个元素都具有相同的底层二进制标量数据类型。注意入参要求:(length * size_of_element) + byte_offset 不得超过传入数组的大小(以字节为单位),其中size_of_element 指数组中元素数据类型的大小,否则会引发 RangeError 异常。| |OH_JSVM_CreateDataview | 在现有的 ArrayBuffer 上创建一个 JavaScript DataView 对象,DataView 对象在底层数据缓冲区上提供类似数组的视图,该 ArrayBuffer 允许有不同大小和类型的元素。要求 byte_length + byte_offset 小于或等于传入数组的字节大小,否则会引发 RangeError 异常。| |OH_JSVM_GetArrayLength | 返回 Array 对象的长度 | |OH_JSVM_GetTypedarrayInfo | 获取 TypedArray(类型化数组)对象的信息 | @@ -42,7 +42,7 @@ JSVM-API 接口开发流程参考[使用 JSVM-API 实现 JS 与 C/C++ 语言交 创建一个新的 JavaScript 数组对象。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -86,7 +86,7 @@ const char *srcCallNative = R"JS( testCreateArray(); )JS"; ``` - + 预计的输出结果: ``` @@ -147,7 +147,7 @@ function testCreateArrayWithLength(num){ testCreateArrayWithLength(num); )JS"; ``` - + 预计的输出结果: ``` @@ -157,7 +157,7 @@ JSVM CreateArrayWithLength success 在现有的 ArrayBuffer上 创建一个 JavaScript TypedArray 对象,TypedArray 对象在底层数据缓冲区上提供类似数组的视图,其中每个元素都具有相同的底层二进制标量数据类型。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -251,7 +251,7 @@ createTypedArray(type.INT8_ARRAY); createTypedArray(type.INT32_ARRAY); )JS"; ``` - + 预计的输出结果: ``` @@ -262,7 +262,7 @@ JSVM CreateTypedArray success 在现有的 ArrayBuffer 上创建一个 JavaScript DataView 对象,DataView 对象在底层数据缓冲区上提供类似数组的视图。 -cpp部分代码 +cpp 部分代码: ```cpp static int DIFF_VALUE_FOUR = 4; @@ -358,7 +358,7 @@ const char *srcCallNative = R"JS( createDataView(new ArrayBuffer(16), BYTE_OFFSET); )JS"; ``` - + 预计的输出结果: ``` @@ -370,7 +370,7 @@ JSVM CreateDataView success, returnOffset: 4 返回 Array 对象的长度。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -421,7 +421,7 @@ let data = [0, 1, 2, 3, 4, 5]; getArrayLength(data); )JS"; ``` - + 预计的输出结果: ``` @@ -431,7 +431,7 @@ JSVM length: 6 获取 TypedArray(类型化数组)对象的信息。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -533,7 +533,7 @@ getTypedArrayInfo(new Int8Array(5), 2); getTypedArrayInfo(new Int8Array(1), 3); )JS"; ``` - + 预计的输出结果: ``` @@ -546,7 +546,7 @@ JSVM GetTypedArrayInfo success, byteOffset: 0 获取 Dataview 对象的信息。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -640,7 +640,7 @@ isarraybuffer = 2; getDataViewInfo(data, isarraybuffer); )JS"; ``` - + 预计的输出结果: ``` @@ -653,7 +653,7 @@ JSVM GetDataViewInfo success, byteOffset: 0 判断一个 JavaScript 对象是否为 Array 类型对象。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -692,7 +692,7 @@ let data = [1, 2, 3, 4, 5]; isArray(data); )JS"; ``` - + 预计的输出结果: ``` @@ -702,7 +702,7 @@ JSVM IsArray success, IsArray: 1 在给定对象的指定索引处设置元素。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -740,7 +740,7 @@ const char *srcCallNative = R"JS( setElement(3); )JS"; ``` - + 预计的输出结果: ``` @@ -750,7 +750,7 @@ JSVM SetElement success 获取给定对象指定索引处的元素。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -791,7 +791,7 @@ let arr = [10, 'hello', null, true]; getElement(arr, 3); )JS"; ``` - + 预计的输出结果: ``` @@ -801,7 +801,7 @@ JSVM GetElement success 若给定对象的指定索引处拥有属性,获取该元素。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -846,7 +846,7 @@ hasElement(arr, 0); hasElement(arr, 4); )JS"; ``` - + 预计的输出结果: ``` @@ -857,7 +857,7 @@ JSVM hasElement: 0 尝试删除给定对象的指定索引处的元素。 -cpp部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -901,7 +901,7 @@ let arr = [10, 'hello', null, true]; deleteElement(arr, 0); )JS"; ``` - + 预计的输出结果: ``` @@ -911,7 +911,7 @@ JSVM DeleteElement: 1 判断一个 JavaScript 对象是否为 Dataview类型对象。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -951,7 +951,7 @@ let dataView = new DataView(buffer); isDataView(dataView); )JS"; ``` - + 预计的输出结果: ``` @@ -961,7 +961,7 @@ JSVM IsDataView: 1 判断一个 JavaScript 对象是否为 Typedarray 类型对象。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -998,7 +998,7 @@ const char *srcCallNative = R"JS( isTypedarray(new Uint16Array([1, 2, 3, 4])); )JS"; ``` - + 预计的输出结果: ``` diff --git a/zh-cn/application-dev/napi/use-jsvm-about-date.md b/zh-cn/application-dev/napi/use-jsvm-about-date.md index e3c4527f397574a6de39572bf9aa2e622b4c151d..c013dd07a47591cdfec769c7734079a4e7f428ad 100644 --- a/zh-cn/application-dev/napi/use-jsvm-about-date.md +++ b/zh-cn/application-dev/napi/use-jsvm-about-date.md @@ -22,7 +22,7 @@ JavaScript Date对象提供了一种在JavaScript中表示和操作日期和时 ## 使用示例 -JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅对接口对应C++相关代码进行展示。 +JSVM-API接口开发流程请参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅展示接口对应的C++相关代码。 ### OH_JSVM_CreateDate @@ -70,7 +70,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(createDate())JS"; ``` - + ### OH_JSVM_GetDateValue @@ -111,7 +111,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(getDateValue(new Date(Date.now())))JS"; ``` - + ### OH_JSVM_IsDate @@ -145,4 +145,4 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(isDate(new Date(Date.now())))JS"; ``` - + diff --git a/zh-cn/application-dev/napi/use-jsvm-about-primitive.md b/zh-cn/application-dev/napi/use-jsvm-about-primitive.md index 125bd98caed936754c7553355aca89db479fe980..d97e3d85e4ff2df01dda6fbec88fc88ffaae1c5d 100644 --- a/zh-cn/application-dev/napi/use-jsvm-about-primitive.md +++ b/zh-cn/application-dev/napi/use-jsvm-about-primitive.md @@ -32,7 +32,7 @@ JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开 用于将一个给定的JavaScript值强制转为JavaScript boolean值。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -68,7 +68,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(coerceToBool("123"))JS"; ``` - + 预期结果 ``` @@ -79,7 +79,7 @@ SVM OH_JSVM_CoerceToBool success:1 用于将给定的JavaScript value强转为JavaScript number。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -115,7 +115,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(coerceToNumber(true))JS"; ``` - + 预期结果 ``` @@ -161,7 +161,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(coerceToObject(123))JS"; ``` - + 预期结果 ``` @@ -172,7 +172,7 @@ JSVM OH_JSVM_CoerceToObject success 用于将给定的JavaScript value强转为JavaScript string类型。 -cpp部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -207,7 +207,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(coerceToString(22222))JS"; ``` - + 预期结果 ``` @@ -218,7 +218,7 @@ JSVM OH_JSVM_CoerceToString success 获取给定布尔值的JavaScript单例对象。 -cpp部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -266,7 +266,7 @@ static JSVM_PropertyDescriptor descriptor[] = { const char *srcCallNative = R"JS(getBoolean(1, 2); getBoolean(1, 1))JS"; ``` - + 预期结果 ``` @@ -279,7 +279,7 @@ JSVM OH_JSVM_CoerceToNumber success:1 使用这个函数将JavaScript中的布尔值转为等价的C布尔值。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -319,7 +319,7 @@ const char *srcCallNative = R"JS(getValueBool("abc"); getValueBool(true); getValueBool(false);)JS"; ``` - + 预期结果 ``` @@ -332,7 +332,7 @@ JSVM OH_JSVM_GetValueBool success:0 用于获取全局JavaScript对象。该函数的主要作用是获取表示JavaScript全局对象的JSVM_Value,使得JSVM模块能够与JavaScript运行时的全局对象进行交互。 -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -367,7 +367,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(getGlobal())JS"; ``` - + 预期结果 ``` @@ -378,7 +378,7 @@ JSVM OH_JSVM_GetGlobal success 用于获取JavaScript null -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -408,7 +408,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(getNull())JS"; ``` - + 预期结果 ``` @@ -419,7 +419,7 @@ JSVM OH_JSVM_GetNull success 用于获取JavaScript undefined -cpp 部分代码 +cpp 部分代码: ```cpp // hello.cpp @@ -455,7 +455,7 @@ static JSVM_PropertyDescriptor descriptor[] = { // 样例测试js const char *srcCallNative = R"JS(getUndefined())JS"; ``` - + 预期结果 ``` diff --git a/zh-cn/application-dev/napi/use-jsvm-about-string.md b/zh-cn/application-dev/napi/use-jsvm-about-string.md index d99a91ae63d0ed23cdead44f7461a23c28522153..e3041e2611cddb159691eac5e3a8a81844f8983a 100644 --- a/zh-cn/application-dev/napi/use-jsvm-about-string.md +++ b/zh-cn/application-dev/napi/use-jsvm-about-string.md @@ -6,7 +6,7 @@ ## 基本概念 -string是编程中常用的数据类型之一。它可以存储和操作文本数据,用于表示和处理字符序列。还可用于构建用户界面元素,如标签、按钮和文本框,处理用户输入,验证和格式化输入数据。不同的编码支持不同的字符集和语言,以下是一些主要的编码方案及其区别: +string是编程中常用的数据类型。它可以存储和操作文本数据,用于表示和处理字符序列。它还可以用于构建用户界面元素,如标签、按钮和文本框,处理用户输入,验证和格式化数据。不同的编码方案支持不同的字符集和语言,以下是一些主要的编码方案及其区别: - **ASCII**:ASCII是最早的字符编码方案之一,使用7位编码,只能表示英文字母、数字和一些基本符号。它是许多其他编码方案的基础。 - **UTF-8**:UTF-8是一种变长编码方案,可以表示全球范围的字符集。它使用8位编码,根据字符的不同范围使用不同长度的字节序列。UTF-8是互联网上广泛使用的编码方案。 @@ -78,7 +78,7 @@ const char *srcCallNative = R"JS( let script = getValueStringUtf8(data); )JS"; ``` - + 预期输出结果 @@ -128,7 +128,7 @@ const char *srcCallNative = R"JS( let script = createStringUtf8(); )JS"; ``` - + 预期输出结果 @@ -192,7 +192,7 @@ const char *srcCallNative = R"JS( let script = getValueStringUtf16(data); )JS"; ``` - + 预期输出结果 @@ -249,7 +249,7 @@ const char *srcCallNative = R"JS( let script = createStringUtf16(); )JS"; ``` - + 预期输出结果 @@ -303,7 +303,7 @@ const char *srcCallNative = R"JS( let script = getValueStringLatin1(data); )JS"; ``` - + 预期输出结果 @@ -358,7 +358,7 @@ const char *srcCallNative = R"JS( let script = createStringLatin1(); )JS"; ``` - + 预期输出结果 diff --git a/zh-cn/application-dev/napi/use-jsvm-about-well-known-symbols.md b/zh-cn/application-dev/napi/use-jsvm-about-well-known-symbols.md index 62ff49feea78eb5b057edb0ccba82bc44a1a9b03..1ea293fc8c6d6de7eaa2de48df2a6cee0915b618 100644 --- a/zh-cn/application-dev/napi/use-jsvm-about-well-known-symbols.md +++ b/zh-cn/application-dev/napi/use-jsvm-about-well-known-symbols.md @@ -26,7 +26,7 @@ JSVM-API中Well-known symbols相关接口可以通过不同API直接拿到对应 ## 使用示例 -JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅对接口对应C++相关代码进行展示。 +JSVM-API接口开发流程请参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅展示接口对应的C++相关代码。 ### 使用接口获取Well-known symbols(以OH_JSVM_GetSymbolToStringTag为例) diff --git a/zh-cn/application-dev/napi/use-jsvm-create-snapshot.md b/zh-cn/application-dev/napi/use-jsvm-create-snapshot.md index 152eb6facc2fcbed820462dcb24813dfaea96a01..7f70e9da8f5d9bedc1eb16c6ce0cdb23ac88f056 100644 --- a/zh-cn/application-dev/napi/use-jsvm-create-snapshot.md +++ b/zh-cn/application-dev/napi/use-jsvm-create-snapshot.md @@ -297,7 +297,7 @@ static napi_module demoModule = { extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); } ``` - + ArkTS侧示例代码 @@ -338,4 +338,4 @@ Test JSVM RunVMSnapshot read file blobSize = : 300032 Test JSVM RunVMSnapshot read file blobSize = : 300176 Test JSVM RunVMSnapshot read file blobSize = : 300048 ``` -这是因为,在读取快照文件时,blobSize 是通过 file.tellg() 获取的文件大小。因此,快照文件的大小直接决定了 blobSize 的值。 +上述执行结果是因为在读取快照文件时,blobSize 的值来源于快照文件的大小(通过 file.tellg() 获取)。快照文件的大小直接决定了 blobSize 的值,所以会输出不同的值。 diff --git a/zh-cn/application-dev/napi/use-jsvm-life-cycle.md b/zh-cn/application-dev/napi/use-jsvm-life-cycle.md index abdaaf25d7d569e1be471eb4f8d14624e81357a8..457176d074cca985532f1d47ef6ca284004228f8 100644 --- a/zh-cn/application-dev/napi/use-jsvm-life-cycle.md +++ b/zh-cn/application-dev/napi/use-jsvm-life-cycle.md @@ -3,7 +3,7 @@ ## 简介 在JSVM-API中,JSVM_Value是一个表示JavaScript值的抽象类型,它可以表示任何JavaScript值,包括基本类型(如数字、字符串、布尔值)和对象类型(如数组、函数、对象等)。 -JSVM_Value的生命周期与其在JavaScript中的对应值的生命周期紧密相关。当JavaScript值被垃圾回收时,与之关联的JSVM_Value也将不再有效。重要的是不要在JavaScript值不再存在时尝试使用JSVM_Value。 +JSVM_Value的生命周期与JavaScript值的生命周期相关。JavaScript值被垃圾回收后,JSVM_Value将失效。请勿在JavaScript值不存在时使用JSVM_Value。 框架层的scope通常用于管理JSVM_Value的生命周期。在JSVM-API中,可以使用OH_JSVM_OpenHandleScope和OH_JSVM_CloseHandleScope函数来创建和销毁scope。通过在scope内创建JSVM_Value,可以确保在scope结束时自动释放JSVM_Value,避免内存泄漏。 @@ -46,7 +46,7 @@ JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开 ### OH_JSVM_OpenHandleScope、OH_JSVM_CloseHandleScope -通过接口OH_JSVM_OpenHandleScope创建一个上下文环境使用。需要使用OH_JSVM_CloseHandleScope进行关闭。用于管理JavaScript对象的生命周期确保在JSVM-API模块代码处理JavaScript对象时能够正确地管理其句柄,以避免出现垃圾回收相关的问题。 +通过接口OH_JSVM_OpenHandleScope创建一个上下文环境,使用时需调用OH_JSVM_CloseHandleScope进行关闭。该机制用于管理JavaScript对象的生命周期,确保在JSVM-API模块中处理JavaScript对象时能正确管理其句柄,避免垃圾回收相关的问题。 cpp部分代码