Как создать геттер в надстройке узла?

Я был в процессе написания надстройки узла, и я не могу понять, как добавить свойство в класс. То, что я делал, это создание метода в c++ дополнение, и в javascript Я создаю геттер, который вызывает функцию в дополнении.

Это правильный способ сделать это, или это свойство может быть создано в c++ добавить?

в c++ Я сделаю это:

void MyAddon::Init(Local<Object> exports, Local<Object> module) {

// Prepare constructor template
Local<FunctionTemplate> tpl = FunctionTemplate::New(isolate, New);
tpl->SetClassName(String::NewFromUtf8(isolate, "MyAddon"));
tpl->InstanceTemplate()->SetInternalFieldCount(1);

// Add the property
NODE_SET_PROTOTYPE_METHOD(tpl, "currWidth", Width);// Export the class
constructor.Reset(isolate, tpl->GetFunction());
exports->Set(
String::NewFromUtf8(isolate, "MyAddon"), tpl->GetFunction());
}

Тогда в JavaScript Я сделаю это:

const MyAddon = require('./build/Release/MyAddon')

module.exports.Addon = class Addon extends MyAddon.MyAddon {
get width() { return this.currWidth() }
}

Это не похоже на правильный способ добавить свойство в надстройку. пример на сайте использования NODE_SET_METHOD, поэтому я попытался, но он не запускает метод. Я тоже не получаю никаких ошибок. Метод просто не запускается …

В этом примере они не пытаются установить его в классе, что я и пытаюсь сделать, поэтому мой немного отличается:

NODE_SET_METHOD((Local<Template>)tpl, "height", Height);

Как я могу создать это свойство в c++?

0

Решение

в Init метод, это было так же просто, как добавить эту строку:

tpl->InstanceTemplate()->SetAccessor(String::NewFromUtf8(isolate, "width"), Width);

И создание метода, который выглядит следующим образом:

void MyAddon::Width(Local<String> property, const PropertyCallbackInfo<Value> &args) {}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]