В V8 Javascript Engine, как добавяте FunctionTemplate като атрибут на друг FunctionTemplate с C++ API?

Имам функция, настроена да връща обвит C++ обект, когато се извиква като

new MyClass();

но искам също да мога да кажа

MyClass.do_something();

Знам как да правя каквото искам в чист javascript:

MyClass.prototype = { do_something: function(){}};

но как да направя същото в C++?

Знам за методите InstanceTemplate() и PrototypeTemplate() на v8::FunctionTemplate, но те изглежда се използват само при създаването на новия обект, върнат при извикване на new MyClass(). Как да стигна до прототипа на действителната функция?

Благодаря ти.

Видях тази публикация, но не съм сигурен дали е уместна: Добавяне на шаблон на функция към прототип на глобален обект във v8


person xaxxon    schedule 21.06.2016    source източник
comment
Вижте stackoverflow.com/questions/36491385/   -  person guest271314    schedule 21.06.2016
comment
Не виждам нищо там, което да отговаря конкретно на въпроса ми. Всичко, което виждам, е да използвам шаблони, които вече съм: запознат съм с методите InstanceTemplate() и PrototypeTemplate() на v8::FunctionTemplate   -  person xaxxon    schedule 21.06.2016
comment
Мисля, че прекалявах с това. Просто извиквате .Set на шаблона на функцията.   -  person xaxxon    schedule 21.06.2016
comment
Вижте stackoverflow.com/help/self-answer   -  person guest271314    schedule 21.06.2016
comment
да, това беше по-скоро предположение преди. Но сега, след като потвърдих, си отговорих сам. Изглежда го правя често в маркера [v8]. Сега просто трябва да не забравя да се върна и да приема отговора след 2 дни.   -  person xaxxon    schedule 21.06.2016


Отговори (1)


Оказа се, че съм преуморил проблема.

Просто извиквате .Set() на вашия v8::FunctionTemplate и предавате друг v8::FunctionTemplate като стойност.

my_constructor_function_template.Set("static_method_name", static_method_function_template);
person xaxxon    schedule 21.06.2016