direct_proxies "problem"

François REMY at
Tue Jan 8 12:53:34 PST 2013

This is a known problem called Object identity. We already have this problem today with Object.create(document.createElement("p")) which is an "instanceof HTMLElement" but is invalid for any DOM purpose. 

However, if you take the same P element and set its __proto__ to null, it will still be a valid P element for DOM purposes even though it's no an "instanceof HTMLElement" anymore. I don't know is this behavior is specced anywhere, but this is how it works. 

Maybe it would be great to have a way to "confer" the object identify to another object, and it could be useful for polyfill use cases. Until now, it's not possible to create an object whose native object identity is not "neutral". Proxies don't escape to this rule...

> Date: Tue, 8 Jan 2013 12:40:00 -0800 
> Subject: direct_proxies "problem" 
> From: andrea.giammarchi at 
> To: es-discuss at 
> So, I am playing with FF 18 and I have this behavior: 
> var a = new Proxy([], {}); 
> console.log(a instanceof Array); // true 
> console.log(Array.isArray(a)); // true 
> console.log({};// [object Array] 
> Function.apply(null, a); // anonymous() 
> Cool uh? there's no way to tell that a is not actually an array but rather a proxy: awesome!!! 
> Now I go in that dark place called DOM: 
> var n = new Proxy(document.createElement("p"), {}); 
> console.log(n instanceof HTMLElement);// true 
> console.log({}; // true 
> document.body.appendChild(n); 
> // Error: Could not convert JavaScript argument arg 0 [nsIDOMHTMLBodyElement.appendChild] 
> Is this meant? 'cause it looks lik ewe have half power here and once again inconsistencies ... thanks for explaining me this. 
> br 
> _______________________________________________ es-discuss mailing list 
> es-discuss at 		 	   		  

More information about the es-discuss mailing list