我在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
令牌,它是什么意思/做什么?
答案 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解释器的源代码......)