Javascript-C

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Esquema de Flujo
Aquí se puede apreciar el "recorrido" de una instrucción mandada desde la aplicación. El primer paso lo inicia la aplicación que manda una instrucción , que luego, el motor de Javascript la interpreta y hace las manipulaciones pertinentes y después devuelve el valor.
"Runtime",
o tiempo de pasada, que es lo que se aprecia en esta imagen, con la función JS_NewRuntime se pasa las instrucciones y devuelve el valor pertinente.

Javascript-C es la versión SpiderMonkey de Mozilla ,es decir un lenguaje cruzado, para la interpretación de objetos del mediante Gecko-JavaScript invocado en C++, lo que permite a la Programación orientada a objetos hasta el Modelo en Objetos para la representación de Documentos de una aplicación. Los archivos *.c, *.h y *.o se vinculan mediante unos #include por cada archivo, que para que funcione tiene que haber los archivos del jsapi

Ejecución[editar]

El primer paso lo inicia la aplicación que manda una instrucción , que luego, el motor de Javascript la interpreta y hace las manipulaciones pertinentes y después devuelve un valor. Con la función JS_NewRuntime se pasa las instrucciones y devuelve el valor pertinente.

Versiones de respaldo del Javascript[editar]

Las ayudas de motor de JS (JavaScript) JS 1,0 JS directo 1,4. JS 1,3 y mayor se conforman con la especificación ECMAScript-262. En su más simple, el motor de JS analiza, compila, y ejecuta las escrituras que contienen declaraciones y funciones de JS. El motor maneja la asignación de memoria para los tipos de datos de JS y se opone necesario para ejecutar las escrituras, y limpia para arriba -- la basura recoge -- los tipos y los objetos de datos en la memoria esa él ningunas necesidades más largas.

Funcionamiento[editar]

Se solicita al motor de JS pudo ser una llamada a JS_NewObject para crear el objeto de encargo. Cuando el motor de JS crea el objeto, vuelve un indicador a su uso. Su uso puede entonces llamar el motor de JS otra vez para ejecutar las escrituras que utilizan el objeto. Por ejemplo, después de crear el objeto del usuario, su uso pudo pasar inmediatamente una escritura a JS_EvaluateScript para la compilación y ejecutarse inmediatamente. Que la escritura pudo conseguir y validar la información de un usuario, y entonces que establezca los derechos de acceso de usuario a otras características del uso.

Lo que hace es que la aplicación manda una rutina de JS al JSAPI ( interfaz de programación en JS) y devuelve un JS que la aplicación la interpreta tal y como C++

Este sistema de programación es muy usado por Macromedia Dreamweaver, Macromedia Flash, Macromedia Fireworks

Tipos de valores[editar]

  • JSVAL_IS_OBJECT, el valor es un objeto.
  • JSVAL_IS_NUMBER, el valor es un número, por ejemplo 459.
  • JSVAL_IS_INT, el valor es un número entero, por ejemplo en 593,55 el entero es '593'.
  • JSVAL_IS_DOUBLE, el valor que doble, en programación se entiende como la parte decimal, en el ejemplo anterior sería '55'.
  • JSVAL_IS_STRING, el valor es una cadena y se escribe entre comillas ("string").
  • JSVAL_IS_BOOLEAN, es un valor booleano, es decir verdadero o falso.

Fragmentos de código[editar]

.
.
.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* include the JS engine API header */
#include "jsapi.h"
.
.
.

/* main function sets up global JS variables, including run time,
 * a context, and a global object, then initializes the JS run time,
 * and creates a context. */

int main(int argc, char **argv)
{
  int c, i;
  /*set up global JS variables, including global and custom objects */

  JSVersion version;
  JSRuntime *rt;
  JSContext *cx;
  JSObject  *glob, *it;
  JSBool builtins;

  /* initialize the JS run time, and return result in rt */
  rt = JS_NewRuntime(8L * 1024L * 1024L);

  /* if rt does not have a value, end the program here */
  if (!rt)
    return 1;

  /* create a context and associate it with the JS run time */
  cx = JS_NewContext(rt, 8192);

  /* if cx does not have a value, end the program here */
  if (cx == NULL)
    return 1;

  /* create the global object here */
  glob = JS_NewObject(cx, clasp, NULL, NULL);

  /* initialize the built-in JS objects and the global object */
  builtins = JS_InitStandardClasses(cx, glob);

  .
  . 
  .

  return 0;

}

ejemplo aquí

Véase también[editar]

Enlaces externos[editar]

(*) en inglés