这个直接来自Embedder's Guide 的示例似乎非常接近您想要的 - 用新Integer
对象替换新String
对象。
// This function returns a new array with three elements, x, y, and z.
Handle<Array> NewPointArray(int x, int y, int z) {
// We will be creating temporary handles so we use a handle scope.
HandleScope handle_scope;
// Create a new empty array.
Handle<Array> array = Array::New(3);
// Return an empty result if there was an error creating the array.
if (array.IsEmpty())
return Handle<Array>();
// Fill out the values
array->Set(0, Integer::New(x));
array->Set(1, Integer::New(y));
array->Set(2, Integer::New(z));
// Return the value through Close.
return handle_scope.Close(array);
}
我已经阅读了 Local 和 Persistent 句柄的语义,因为我认为这就是你陷入困境的地方。
这一行:
v8::Handle<v8::Array> result;
不创建新数组 - 它只创建一个以后可以用数组填充的句柄。