Browse Source

Fixing falsy value assigns in JSObjectProxy

Herbert Vojčík 10 years ago
parent
commit
c4e27d6f1d
1 changed files with 12 additions and 12 deletions
  1. 12 12
      support/boot.js

+ 12 - 12
support/boot.js

@@ -915,7 +915,7 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require
 			return result;
 		}
 
-		/* Wrap a JavaScript exception in a Smalltalk Exception. 
+		/* Wrap a JavaScript exception in a Smalltalk Exception.
 
 		 In case of a RangeError, stub the stack after 100 contexts to
 		 avoid another RangeError later when the stack is manipulated. */
@@ -1038,17 +1038,17 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require
 
 		function callJavaScriptMethod(receiver, selector, args) {
 			var jsSelector = selector._asJavaScriptSelector();
-			var jsProperty = receiver[jsSelector];
-			if(typeof jsProperty === "function" && !/^[A-Z]/.test(jsSelector)) {
-				return jsProperty.apply(receiver, args);
-			} else if(jsProperty !== undefined) {
-				if(args[0] !== undefined) {
-					receiver[jsSelector] = args[0];
-					return nil;
-				} else {
-					return jsProperty;
-				}
-			}
+            if (jsSelector in receiver) {
+                var jsProperty = receiver[jsSelector];
+                if (typeof jsProperty === "function" && !/^[A-Z]/.test(jsSelector)) {
+                    return jsProperty.apply(receiver, args);
+                } else if (args.length > 0) {
+                    receiver[jsSelector] = args[0];
+                    return nil;
+                } else {
+                    return jsProperty;
+                }
+            }
 
 			return st.send(globals.JSObjectProxy._on_(receiver), selector, args);
 		}