Зачем использовать Local ‹Value› :: New вместе со String :: New ()

Я использовал это:

 Local<Value> argv[argc] = { String::New("hello world") };

Но теперь я вижу пример на сайте node.js:

 Local<Value> argv[argc] = { Local<Value>::New(String::New("hello world")) };

Что это означает? Какая разница, когда я должен использовать Local<Value> в дополнение к String::New()


person exebook    schedule 01.03.2014    source источник
comment
Ваше использование в контексте вызова обратного вызова?   -  person Joe    schedule 01.03.2014
comment
@Joe, у меня есть более простые функции и те, которые вызывают обратные вызовы   -  person exebook    schedule 01.03.2014
comment
Единственный код, который я видел в документации надстройки узла, использует эту конструкцию в контексте собственного надстройки, вызывающего обратный вызов JS. Но я хотел бы знать, имеет ли это значение.   -  person Joe    schedule 01.03.2014
comment
Что особенно интересно, так это то, что документы нестабильной версии (0.11.x) были изменены, чтобы этого не делать ... например. nodejs.org/dist/v0.11.11/docs/api/ addons.html # addons_callbacks   -  person Joe    schedule 01.03.2014


Ответы (1)


Судя по всему, пример node.js в данном случае был неправильным / неэффективным.

https://github.com/joyent/node/commit/98aad77f466d9c36947f2cbb6d07b75009795ed2#commitcomment-5532648

jnardone добавил заметку 2 часа назад

Было ли это одной из тех вещей, которые всегда были неправильными, или же было лежащее в основе изменение версии 8, которое означало, что это должно измениться? Дополнительный Local :: New всегда выглядел странно, но я не могу сказать, требовалось ли что-то внутри v8 этой дополнительной оболочки или нет.

bnoordhuis добавил заметку 7 минут назад

Это уборка. Создание локального объекта из локального не является вредным, но излишним и немного неэффективным.

Итак, ваш первый формат в порядке.

person Joe    schedule 01.03.2014