What does the 'native' keyword mean in JavaScript?

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?

Answers:

Answer

That is used to tell v8 that the function is implemented in C++ code

Answer

The native keyword is not defined in the ECMAScript 5 specification.

Sounds like it's part of a chrome extension

Answer

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

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.