我有幾個簡單的C++類,例如:將C++方法綁定到現有JS函數原型的最簡單方法是什麼?
class Audio {
public:
Audio(const char *filename, bool async = true);
~Audio();
Audio *play(int fade = 0);
Audio *pause();
Audio *loop(int loops = -1);
Audio *volume(float volume);
我已經複製在JavaScript結構如下:
var Audio = function(filename, async) {};
Audio.prototype.Play = function(fade) {};
Audio.prototype.Pause = function() {};
Audio.prototype.Loop = function(loops) {};
Audio.prototype.Volume = function(volume) {};
而讀取兩個文檔和V8中的源之後,V8-果汁和大量的博客......我找不到關於如何用C++方法「覆蓋」JS函數的單一參考。我希望JS能夠控制類的創建/破壞(這可能嗎?),並且讓這些對象總是指向我的本地函數(PrototypeTemplate?)。
我認真度過了今天整整一天,閱讀與此相關的文章/博客/代碼,無法找到,我應該希望的是,一個簡單的答案。
爲了你們,一個「簡單」的答案,我會沿着這些路線的東西(包裝的罰款與我;如果我有寫的創建/銷燬沒關係包裝):
v8::Local<v8::Function> jsAudioFunction = v8::Local<v8::Function>::Cast(v8::Context::GetCurrent()->Global()->Get(v8::String::New("Audio")));
jsAudioFunction->Setup(/* setup constructor/destructor */);
jsAudioFunction->SetPrototype(/* map native methods to js functions */);
你看過https://developers.google.com/native-client/嗎? – MadScientist 2012-07-16 07:06:22