javascript - 如何将 v8 值转换为数组

标签 javascript c++ v8

我正在为 v8 编写一个 c++ 扩展,并希望将一个 Array 对象传递给它。我看到传入的参数可以通过 IsArray() 进行测试,但没有 ToArray()。

你如何访问它的长度,并通过数字索引请求元素?

Handle<Value> MyExtension(const Arguments& args)
{
    Handle<Value> v = args[0];
    if(v->IsArray())
    {
        // convert to array, find its length, and access its members by index... ?
    }
...
}

这里一定遗漏了一些明显的东西。 Object 可以返回它的所有属性,但这并不是我所希望的。有没有办法把它作为一个数组?

感谢阅读。

最佳答案

您应该使用句柄的 Cast 方法将其转换为不同的类型:

v8::Handle<v8::Array> array = v8::Handle<v8::Array>::Cast(v);

关于javascript - 如何将 v8 值转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11707167/

相关文章:

c++ - 类内私有(private)结构的构造函数出错

c++ - C++ 中的数据类型

javascript - 如何在 Clearscript 中序列化已编译的 V8Script?

javascript - 如果另一个元素等于某个文本,则更改具有相同类的每个 div 元素的颜色

javascript - 从 JavaScript 在 WebView 中播放声音

javascript - 如何通过 Node js 发送 div?

c++ - 现在我可以替换所有 Date 类吗?

javascript - 如何从 react 组件获取输入并将输入的长度传递给另一个 react 组件

c++ - V8 对象包装器未正确添加属性

node.js - 如何更改 Node.js 内存设置以允许非常大 (>100GB) 内存