Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

175
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!