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: [email protected]
> To: [email protected]
>
> 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({}.toString.call(a));// [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({}.toString.call(n)); // 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
> [email protected] https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss