V8:如何在 Persistent 处理程序上使用 Set 方法?
V8: How to use Set method on a Persistent handler?
我需要在持久处理程序引用的对象上设置属性。但是,Persistent class 似乎没有 Set 方法(与 Local class 不同)。
这是否意味着持久处理程序是只读的?那么在持久处理程序上设置 属性 的最佳方法是什么?
从 v8::Persistent
创建一个 v8::Local
,然后使用它来调用对象(Set
and/or 其他)的操作。请注意,为此您需要一个有效的 HandleScope
。
v8::Persistent<v8::Object> my_persistent = ...;
v8::HandleScope scope(isolate);
v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(isolate, my_persistent);
obj->Set(...);
(吹毛求疵:Local
也没有 Set
方法;它有一个 operator->
重载,可让您调用方法(包括 Set
) 在 Local 所指的事物上。如果那个事物不是 v8::Object
,而是例如 v8::Number
,那么它不会有 Set
方法。)
我需要在持久处理程序引用的对象上设置属性。但是,Persistent class 似乎没有 Set 方法(与 Local class 不同)。
这是否意味着持久处理程序是只读的?那么在持久处理程序上设置 属性 的最佳方法是什么?
从 v8::Persistent
创建一个 v8::Local
,然后使用它来调用对象(Set
and/or 其他)的操作。请注意,为此您需要一个有效的 HandleScope
。
v8::Persistent<v8::Object> my_persistent = ...;
v8::HandleScope scope(isolate);
v8::Local<v8::Object> obj = v8::Local<v8::Object>::New(isolate, my_persistent);
obj->Set(...);
(吹毛求疵:Local
也没有 Set
方法;它有一个 operator->
重载,可让您调用方法(包括 Set
) 在 Local 所指的事物上。如果那个事物不是 v8::Object
,而是例如 v8::Number
,那么它不会有 Set
方法。)