I stumbled upon a function called v8Locale
in Chrome's Developer Console. I was curious so I entered the function to get the source code, and it revealed the following code:
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;
}
I started searching on the Internet and found this file which seems to be the source (it looks like it has been minified though).
I have no idea what the native
keyword means here. When I try to make something like this myself:
function bar() {}
function foo() {
native function bar();
}
I get the following error message (as I expected, actually):
SyntaxError: Unexpected token native
How is it possible that the v8Locale
function contains the native
token, and what does it mean/do?
That is used to tell v8
that the function is implemented in C++ code
The native
keyword is not defined in the ECMAScript 5 specification.
Sounds like it's part of a chrome extension
ActionScript, which is also based on ECMAScript, defines the native keyword here:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html#native
They offer an example with code:
native function functionName();
class className {
native function methodName();
}
And there is the description:
Specifies that a function or method is implemented by Flash Player in native code. Flash Player uses the native keyword internally to declare functions and methods in the ActionScript application programming interface (API). This keyword cannot be used in your own code.
As implied by Matt, functions marked as native are implemented in the interpreter so you cannot yourself define a native function (unless you tweak the source code of your JavaScript interpreter...)
©2020 All rights reserved.