2011-07-18 46 views
12

Me encontré con una función llamada v8Locale en la Consola para desarrolladores de Chrome. Tenía curiosidad por lo que entré en la función para obtener el código fuente, y reveló el siguiente código:¿Qué significa la palabra clave 'native' en JavaScript?

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

empecé a buscar en Internet y encontró this file que parece ser la fuente (que parece que ha sido minificado sin embargo).

No tengo idea de qué significa la palabra clave native aquí. Cuando trato de hacer algo como esto a mí mismo:

function bar() {} 

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

me sale el siguiente mensaje de error (como yo esperaba, en realidad):

SyntaxError: Unexpected token native 

¿Cómo es posible que la función v8Locale contiene el token native y ¿qué significa/hago?

+1

Fuente 'src/extensions/experimental/i18n.js'. Suena como un archivo de extensión de Chrome. Puede escribir extensiones de Chrome en un superconjunto de JavaScript. – Raynos

+0

Tal vez es el código del navegador. Por ejemplo, si ve 'window.history.back' en la consola de Chromes, y ve' function() {[native code]} ' –

Respuesta

9

que se utiliza para contar v8 que la función se implementa en código C++

+2

Tenga en cuenta que * native * no implica' C++ '. Podría ser cualquier idioma, Mozilla ha estado usando 'Java', por ejemplo. –

2

El native palabra clave no está definido en la especificación ECMAScript 5.

Suena como si fuera parte de una extensión de Chrome

+1

No está definido, pero está reservado ... ¡así que seguramente hay algunas personas que tienen una idea de para qué sirve! –

+1

@AlexisWilke Se reservó porque es una palabra clave en Java. Lo mismo ocurre con público, privado, volátil, sincronizado, transitorio, etc. Sin embargo, esto no es muy difícil. Creo que el reservado algunos otros por las dudas. –

0

ActionScript, que también se basa en ECMAScript, define la palabra clave nativa aquí:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements.html#native

Ellos ofrecen un ejemplo con código:

native function functionName(); 
class className { 
    native function methodName(); 
} 

Y está la descripción:

Especifica que Flash Player implementa una función o método en código nativo. Flash Player utiliza la palabra clave nativa internamente para declarar funciones y métodos en la interfaz de programación de aplicaciones (API) de ActionScript. Esta palabra clave no se puede usar en su propio código.

como se deduce de Matt, funciones marcadas como nativo se implementan en el intérprete lo que no puede usted definir una función nativa (a menos que modificar el código fuente de su intérprete de JavaScript ...) Ruta

Cuestiones relacionadas