Что означает ключевое слово "native" в JavaScript? - PullRequest
12 голосов
/ 18 июля 2011

Я наткнулся на функцию с именем 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;
}

Я начал поиск в Интернете и нашел этот файл , который, кажется, является источником (похоже, что он был уменьшен).

Понятия не имею, что здесь означает ключевое слово * 1009. Когда я пытаюсь сделать что-то подобное сам:

function bar() {}

function foo() {
    native function bar();
}

Я получаю следующее сообщение об ошибке (как я и ожидал):

SyntaxError: Unexpected token native

Как возможно, что функция v8Locale содержит токен native, и что это значит / делает?

Ответы [ 3 ]

9 голосов
/ 18 июля 2011

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

2 голосов
/ 18 июля 2011

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

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

0 голосов
/ 14 июня 2014

ActionScript, который также основан на ECMAScript, определяет родное ключевое слово здесь:

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 использует внутреннее ключевое слово для объявления функций и методов в интерфейсе прикладного программирования (API) ActionScript. Это ключевое слово не может быть использовано в вашем собственном коде.

Как подразумевает Мэтт, функции, помеченные как собственные, реализованы в интерпретаторе, поэтому вы не можете сами определить собственную функцию (если не настроите исходный код вашего интерпретатора JavaScript ...)

...