代码之家  ›  专栏  ›  技术社区  ›  Get Off My Lawn

如何在节点插件中创建getter?

  •  0
  • Get Off My Lawn  · 技术社区  · 6 年前

    我正在编写一个节点加载项,但似乎不知道如何将属性添加到类中。我一直在做的是在 c++ javascript 我创建了一个getter来调用外接程序中的函数。

    这是正确的方法,还是可以在 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() }
    }
    

    example on the website NODE_SET_METHOD ,所以我尝试了,但它没有运行该方法。我也没有任何错误。方法无法运行。。。

    在这个例子中,他们并没有试图在类上设置它,这也是我正在尝试的,所以我的有点不同:

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

    如何在中创建此属性 c级++ ?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Get Off My Lawn    6 年前

    Init 方法,只需添加以下行:

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

    创建一个如下所示的方法:

    void MyAddon::Width(Local<String> property, const PropertyCallbackInfo<Value> &args) {}
    
    推荐文章