Java-to-JavaScript Data Conversion

In the last two sections, we discussed the rules by which values are converted when JavaScript reads and writes Java fields and invokes Java methods. Those rules explained how the JavaScript JavaObject, JavaArray, and JavaClass objects convert data; they apply only to the case of JavaScript manipulating Java. When Java manipulates JavaScript, the conversion is performed by the Java JSObject class, and the conversion rules are different. Figure 22-4 and Figure 22-5 illustrate these conversions.

Data conversions performed when Java writes JavaScript values

Figure 22-4. Data conversions performed when Java writes JavaScript values

Data conversions performed when Java reads JavaScript values

Figure 22-5. Data conversions performed when Java reads JavaScript values

The point to remember when studying these figures is that Java can interact with JavaScript only through the API provided by the JSObject class. Because Java is a strongly typed language, the methods defined by this class can work only with Java objects, not with primitive values. For example, when you read the value of a JavaScript number, the getMember( ) method returns a java.lang.Double object, rather than a primitive double value.

When writing JavaScript functions that are invoked from Java, bear in mind that the arguments passed by Java are either JavaScript objects from unwrapped Java JSObjects, or JavaObjects. ...

Get JavaScript: The Definitive Guide, Fourth Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.