Index: src/proxy.js |
diff --git a/src/proxy.js b/src/proxy.js |
index d90e5d4ca8ad50f9a2793a74fc20cb4d2ceb5130..cb9c020e35c60c9b0cdcf15e961ca9a8fdb73789 100644 |
--- a/src/proxy.js |
+++ b/src/proxy.js |
@@ -60,8 +60,9 @@ $Proxy.createFunction = function(handler, callTrap, constructTrap) { |
} |
$Proxy.create = function(handler, proto) { |
- if (!IS_SPEC_OBJECT(handler)) throw TypeError |
- if (!IS_SPEC_OBJECT(proto)) proto = $Object.prototype |
+ if (!IS_SPEC_OBJECT(handler)) |
+ throw MakeTypeError("handler_non_object", ["create"]) |
+ if (!IS_SPEC_OBJECT(proto)) proto = null // Mozilla does this... |
return %CreateJSProxy(handler, proto) |
} |
@@ -130,3 +131,7 @@ function DerivedSetTrap(receiver, name, val) { |
configurable: true}); |
return true; |
} |
+ |
+function DerivedHasTrap(name) { |
+ return !!this.getPropertyDescriptor(name) |
+} |