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 方法。)