Don't use .prototype, use (true). Now works for String as well
1.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Tue Nov 27 22:53:29 2012 +0100
1.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Tue Nov 27 23:01:24 2012 +0100
1.3 @@ -399,8 +399,13 @@
1.4 var java_lang_String_serialPersistentFields = 0;
1.5 var java_lang_String_CASE_INSENSITIVE_ORDER = 0;
1.6 function java_lang_String() {
1.7 - /** the real value of this 'string' we delegate to */
1.8 - this.r = '';
1.9 + if (arguments.length === 0) {
1.10 + /** the real value of this 'string' we delegate to */
1.11 + this.r = '';
1.12 + return this;
1.13 + } else {
1.14 + return new java_lang_String;
1.15 + }
1.16 }
1.17 java_lang_String.prototype = new String;
1.18 java_lang_String.prototype.toString = function() { return this.r; };;
2.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Nov 27 22:53:29 2012 +0100
2.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Nov 27 23:01:24 2012 +0100
2.3 @@ -881,7 +881,7 @@
2.4 }
2.5 final String in = mi[0];
2.6 out.append(in.replace('/', '_'));
2.7 - out.append(".prototype.");
2.8 + out.append("(true).");
2.9 out.append(mn);
2.10 out.append('(');
2.11 String sep = "";