2003/09/23 08:24:59
[org.ibex.core.git] / src / org / xwt / js / JS.java
index 5104bce..ea12dfb 100644 (file)
@@ -101,18 +101,23 @@ public abstract class JS {
 
     /** A sensible implementation of the abstract methods in the JS class */
     public static class Obj extends JS {
-        private Hash entries = new Hash();
+        private Hash entries = null;
         private boolean sealed = false;
         public Obj() { this(false); }
         public Obj(boolean sealed) { this.sealed = sealed; }
-        /** a sealed object cannot have its properties modified */
-        public void setSeal(boolean sealed) { this.sealed = sealed; }
-        public void put(Object key, Object val) { if (!sealed) entries.put(key, val); }
-        public Object[] keys() { return(entries.keys()); }
-        public Object get(Object key) {
-            if(callMethod((String)key,null,true) == Boolean.TRUE)
-                return new Internal.CallableStub(this,key);
-            return entries.get(key);
+        public void setSeal(boolean sealed) { this.sealed = sealed; }      ///< a sealed object cannot have its properties modified
+        public void put(Object key, Object val) { put(key, null, val); }
+        protected void put(Object key, Object key2, Object val) {
+            if (sealed) return;
+            if (entries == null) entries = new Hash();
+            entries.put(key, key2, val); }
+        public Object[] keys() { return entries == null ? new Object[0] : entries.keys(); }
+        public Object get(Object key) { return get(key, null); }
+        protected Object get(Object key, Object key2) {
+            if (entries == null) return null;
+            if(key2 == null && callMethod((String)key, null, true) == Boolean.TRUE)
+                return new Internal.CallableStub(this, key);
+            return entries.get(key, key2);
         }
     }