2
我有一些JavaScript文件,我想在調用我的C++函數期間調用此文件中定義的某些函數。請注意,我想通過名稱來調用它,而不僅僅是作爲參數傳遞的一些隨機函數。從C++ node.js擴展調用javascript函數
test.js:
function someFunc()
{
// do something...
}
var my_module = require("my_native_module");
my_module.nativeFunc();
TEST.CPP:
using namespace v8;
Handle<Value> nativeFunc(const Arguments & args)
{
HandleScope scope;
// I want to somehow get someFunc value from current context by name
Local<Value> function_value = Context::GetCurrent()->Global()->Get_By_Name(String::New("someFunc")); // this doesn't work
// probably check that function_value is really a function...
Local<Function> function_callable = Local<Function>::Cast(function_value);
function_callable->Call(Context::GetCurrent()->Global(), 0, nullptr);
return(scope.Close(Undefined()));
}
所有的例子似乎接受這樣的函數作爲參數(回調):
Local<Function> cb = Local<Function>::Cast(args[0]);
但我需要通過名稱來找到該功能。
我使用Node.js的V0。 10.33和v8 :: String沒有任何NewFromUtf8方法。查看v8文檔NewFromUtf8應該在那裏,但它不在包含在node.js – trbvm 2014-12-19 08:50:16
中''NewFromUtf8'用於節點v 0.12。 'String :: New(「Whatevs」)'適用於較舊的節點。 – carter 2015-07-10 21:31:46