簡體   English   中英

在v8中將功能模板添加到全局對象原型

[英]Add a function template to a global object prototype in v8

在V8中,我想通過向全局內置Array對象添加一些功能來修改其原型。 在JavaScript中,我會這樣做,例如:

Array.prototype.sum = function() { 
    // calculate sum of array values
};

如何在C ++中獲得相同的結果? 我在全局ObjectTemplate中添加了一些全局函數模板,但是我不確定如何對假定存在的本機對象原型執行相同的操作。

本機實現:

Handle<Value> native_example(const Arguments& a) {
   return String::New("it works");
}

分配給原型(請注意,出於某種原因,我們需要原型的原型)

Handle<Function> F = Handle<Function>::Cast(context->Global()->Get(String::New("Array")));
Handle<Object> P = Handle<Object>::Cast (F->GetPrototype());
P = Handle<Object>::Cast(P->GetPrototype());
P->Set(String::New("example"), FunctionTemplate::New(native_example)->GetFunction(), None); 

JavaScript用法:

var A = [1,2,3]
log("A.example= " + A.example)
log("A.example()= " + JSON.stringify(A.example()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM