Я был в процессе написания надстройки узла, и я не могу понять, как добавить свойство в класс. Я занимался созданием метода в надстройке 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++
?