Как добавить FunctionTemplate в качестве атрибута другого FunctionTemplate с помощью C++ API в Javascript Engine V8?

У меня есть функция, настроенная для возврата обернутого объекта С++ при вызове как

new MyClass();

но я также хочу иметь возможность сказать

MyClass.do_something();

Я знаю, как делать то, что я хочу, в чистом javascript:

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

но как мне сделать то же самое на С++?

Мне известны методы 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