Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

164
Vistas
¿Las conversiones de objetos JS a Java de GraalVM JavaScript contienen información de tipo?

Para imitar en GraalVM JavaScript algunas de las funciones de Node en util.types , recurrí a las funciones de Java a las que puedo acceder a través Java.type o las variables globales del paquete Java. GraalVM tiene funciones internas como JSProxy.isJSProxy y JSSet.isJSSet que hacen esto. Los hice accesibles marcándolos como exportados, recompilados y probados (accedí a ellos con, por ejemplo, Java.type("com.oracle.truffle.js.builtins.runtime.JSProxy").isJSProxy ).

Como descubrí, las funciones internas de JavaScript de GraalVM son inútiles para mí. Por ejemplo, JSProxy.isJSProxy solo devuelve true si se le pasa una instancia de JSProxyObject . La documentación de Oracle dice que

Los objetos JavaScript se exponen al código Java como instancias de com.oracle.truffle.api.interop.java.TruffleMap . Esta clase implementa la interfaz Map de Java.

TruffleMap no aparece en el código fuente de GraalVM JavaScript y solo aparece una vez en el código fuente de GraalVM , por lo que probablemente esté en desuso, pero eso no viene al caso porque el método de representación probablemente sea el mismo.

Cualquiera que sea la representación externa del lado de Java de los objetos JS en este momento, ¿contiene información sobre cuál es el tipo de objeto en el lado de JavaScript? ¿Puedo determinar si es un proxy JS? ¿Puedo determinar si es un objeto Set ? (Y así sucesivamente para los tipos de objetos nativos de JavaScript).

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para ser honesto, su pregunta es bastante confusa para mí, pero ¿solo está buscando el operador instanceof ?

 import org.graalvm.polyglot.*; import org.graalvm.polyglot.proxy.*; public class Test { public static class MyClass { public int id = 42; } public static void main(String[] args) { try (Context context = Context.newBuilder().allowAllAccess(true).build()) { context.getBindings("js").putMember("javaObj", new MyClass()); boolean valid = context .eval("js", "javaObj instanceof Java.type('Test$MyClass')") .asBoolean(); assert valid; } } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda