I don't see why a host object would claim [[Class]] == "Object" -- we have custom classes throughout our DOM, so do others, but if you want an object whose [[Class]] == "Object", you want an instance of the one true native Object constructor.

The issue with host objects wanting to claim [[Class]] == "Function" was not from IE or any browser I know of (recall that IE's alert is not a function, rather a callable object). The issue may have been a misinterpretation of host objects to mean all those not specified in ECMA-262, which would seem to require DOM object methods to be host objects whose [[Class]] == "Function". But that's not the case. Either such methods are callables that do not claim to be functions (typeof alert == "object"), or they are in fact native Function instances.

/be

On Feb 10, 2009, at 6:15 PM, Allen Wirfs-Brock wrote:

>Mark Miller: I like your #2 direction a lot. If it were feasible to require that host objects not even use [[Class]] "Object", I'd be in favor. However, I'm guessing that would differ too greatly from current browser behavior to have a chance.

That’s what I thought until I probed around a few DOM objects in IE and Firefox and didn’t see any [object “Object”]’s. We probably need the browser experts to tells whether or not it is common practice to use [[Class]]==”Object” for host objects but a casual inspection looked promising.

From: Mark S. Miller [mailto:[email protected]]
Sent: Tuesday, February 10, 2009 6:01 PM
To: Allen Wirfs-Brock
Cc: Mark Miller; Brendan Eich; es-discuss
Subject: Re: [[Class]] and host objects

2009/2/10 Allen Wirfs-Brock <[email protected]>
Mark Miller said: We can get the effect of specifying such indistinguishability simply by specifying that host objects may have as their [[Class]] property "Object", or any string not otherwise used by the spec as a [[Class]] value.



I generally agree, but I have two "what about's" that actually go in different directions from each other.



#1 What about "Function" in addition to "Object"? It seems reasonable to have host objects that are functions in addition host objects that are objects. (Counter-argument: slippery slope)



#2 Why allow "Object" for host objects that are required to conform to the section 15.3 specification for Object. If they are distinguishable from section 15.3 objects they should have [[Class]]=="Object". An implementation can use "HostObject" or something else. (Counter-argument: Might confuse some programmers??? (seems weak))



I like your #2 direction a lot. If it were feasible to require that host objects not even use [[Class]] "Object", I'd be in favor. However, I'm guessing that would differ too greatly from current browser behavior to have a chance.



--
   Cheers,
   --MarkM

_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to