我有以下 JavaScript 基本函数:
function Animal { }
Animal.prototype.move = function () {
//...
}
我还有一个像这样的派生 JavaScript 函数:
function Dog {
Dog.super_.call(this);
}
util.inherits(Dog, Animal);
Dog.prototype.bark = function () {
// ...
}
Dog
现在我想创建一个与派生的JavaScript 函数完全相同的 C++ 插件
:
void Dog::Init(Handle<Object> exports, Handle<Object> module) {
Isolate* isolate = Isolate::GetCurrent();
Local<Function> require = Local<Function>::Cast(module->Get(
String::NewFromUtf8(isolate, "require")));
Local<Value> args[] = {
String::NewFromUtf8(isolate, "./animal")
};
Local<Value> animalModule = require->Call(module, 1, args);
Local<Function> animalFunc = Local<Function>::Cast(animalModule);
Local<FunctionTemplate> tpl = FunctionTemplate::New(isolate, New);
// tpl->Inherit(animalFunc); // <-- HERE
tpl->SetClassName(String::NewFromUtf8(isolate, "Dog"));
tpl->InstanceTemplate()->SetInternalFieldCount(1);
NODE_SET_PROTOTYPE_METHOD(tpl, "bark", Bark);
constructor.Reset(isolate, tpl->GetFunction());
exports->Set(String::NewFromUtf8(isolate, "Dog"),
tpl->GetFunction());
}
如何在函数模板中获取FunctionTemplate
from animalFunc
/animalModule
以便能够从它继承?tpl
或者也许我应该以某种方式将animalFunc.prototype分配给tpl.prototype?