“原生”关键字在JavaScript中意味着什么?

时间:2011-07-18 12:40:13

标签: javascript function native token keyword

我在Chrome的开发者控制台中偶然发现了一个名为v8Locale的功能。我很好奇所以我输入了获取源代码的函数,它显示了以下代码:

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;
}

我开始在互联网上搜索,发现this file似乎是来源(虽然看起来已经缩小了)。

我不知道native关键字在这里意味着什么。当我尝试自己制作这样的东西时:

function bar() {}

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

我收到以下错误消息(正如我预期的那样):

SyntaxError: Unexpected token native

v8Locale函数如何包含native令牌,它是什么意思/做什么?

3 个答案:

答案 0 :(得分:9)

用于告诉v8该函数是用C ++代码实现的

答案 1 :(得分:2)

ECMAScript 5规范中未定义native关键字。

听起来像是Chrome扩展程序的一部分

答案 2 :(得分:0)

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在内部使用native关键字来声明ActionScript应用程序编程接口(API)中的函数和方法。此关键字无法在您自己的代码中使用。

正如Matt暗示的那样,标记为native的函数在解释器中实现,因此您无法自己定义本机函数(除非您调整JavaScript解释器的源代码......)