2010-08-19 35 views
4

谷歌很好,足以解釋如何wrap C++ class methods with accessors that can be used from the V8 Javascript engine如何訪問使用Javascript在C++中創建的動態變量? (通過V8綁定)

但是,他們沒有提及如何確定將具有這些訪問器屬性可用的JavaScript對象的名稱。

如何判斷V8 Javascript C++類實例的名稱(來自示例)是什麼?或者如果它已經有一個名字,它是什麼?

這兩行設立的訪問者:

point_templ.SetAccessor(String::New("x"), GetPointX, SetPointX); 
point_templ.SetAccessor(String::New("y"), GetPointY, SetPointY); 

我認爲他們可以像這樣從JavaScript中使用:

someObject.x = someObject.y * 2; 

我如何確定什麼是 「someObject」 是什麼?

我覺得有一些代碼丟失,完成鏈接C + +代碼與V8的Javascript包裝。

例如,在示例代碼access static global variables有一條線,明確地露出的存取器函數到V8的JavaScript:

Handle<ObjectTemplate> global_templ = ObjectTemplate::New(); 
global_templ->SetAccessor(String::New("x"), XGetter, XSetter); 
global_templ->SetAccessor(String::New("y"), YGetter, YSetter); 
Persistent<Context> context = Context::New(NULL, global_templ) 

回答

3

行,我發現丟失的一塊拼圖:

context->Global()->Set(String::New("p"), obj); 

此行將前面步驟中創建的對象包裝obj公開爲V8 JavaScript的全局上下文,作爲對象「p」。我在這裏命名爲「p」,但它可以是任何有效的JavaScript標識符。 (source

相關問題