Подтвердить что ты не робот

Что означает "родное" ключевое слово в JavaScript?

Я наткнулся на функцию с именем 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, и что он означает/делает?

4b9b3361

Ответ 1

Это используется, чтобы сообщить v8, что функция реализована в коде на С++

Ответ 2

Ключевое слово native не определено в спецификации ECMAScript 5.

Похоже, что это часть расширения chrome

Ответ 3

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...)