Ответ 1
Это используется, чтобы сообщить v8
, что функция реализована в коде на С++
Я наткнулся на функцию с именем v8Locale
в консоли разработчика Chrome. Мне было любопытно, поэтому я ввел функцию, чтобы получить исходный код, и он обнаружил следующий код:
function (a){
native function NativeJSLocale();
var b=NativeJSLocale(a);
this.locale=b.locale;
this.language=b.language;
this.script=b.script;
this.region=b.region;
}
Я начал поиск в Интернете и нашел этот файл, который, кажется, является источником (похоже, что он был уменьшен, хотя).
Я понятия не имею, что означает ключевое слово native
. Когда я сам пытаюсь сделать что-то подобное:
function bar() {}
function foo() {
native function bar();
}
Я получаю следующее сообщение об ошибке (как я и ожидал):
SyntaxError: Unexpected token native
Как возможно, что функция v8Locale
содержит токен native
, и что он означает/делает?
Это используется, чтобы сообщить v8
, что функция реализована в коде на С++
Ключевое слово native
не определено в спецификации ECMAScript 5.
Похоже, что это часть расширения chrome
ActionScript, который также основан на ECMAScript, определяет ключевое слово native:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html#native
Они предлагают пример с кодом:
native function functionName();
class className {
native function methodName();
}
И есть описание:
Указывает, что функция или метод реализована Flash Player в собственном коде. Flash Player использует внутреннее ключевое слово внутри, чтобы объявлять функции и методы в интерфейсе прикладного программирования ActionScript (API). Это ключевое слово не может использоваться в вашем собственном коде.
Как подразумевается Matt, функции, помеченные как native, реализованы в интерпретаторе, поэтому вы не можете сами определить собственную функцию (если только вы не настроите исходный код вашего интерпретатора JavaScript...)