On Mon, Oct 11, 2010 at 5:54 AM, Garrett Smith <span dir="ltr">&lt;<a href="mailto:dhtmlkitchen@gmail.com">dhtmlkitchen@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">&gt;&gt; In other words, [[Class]] &quot;Function&quot; is one of the native internal nominal</div><div class="im">
&gt;&gt; types whose contract is defined by the spec. If a method of a host object<br>
&gt;&gt; obeys that contract, it would be best for it to actually be a native<br>
&gt;&gt; function.<br>
&gt;&gt;<br>
<br>
</div>If a host method obeys that contract, how could one determine if it<br>
were not a native function?<br></blockquote><div><br></div><div>If the &quot;one&quot; in your question is the JS programmer, one determines by testing if its [[Class]] is &quot;Function&quot;. </div><div><br></div><div>
 </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
I think maybe if you want to say that host methods should be just<br>
specified as functions, where that makes sense.</blockquote><div><br></div><div>Need to be careful with terms to avoid confusion here. We&#39;re talking about methods of host objects. If we&#39;re already talking about a host method, then the matter is decided. If it is a host method, then presumably it is a host object, and so it is by definition not a function.</div>
<div><br></div><div>Substituting &quot;method of host object&quot; above, I agree. But as a normative issue, this currently falls in the gap between w3c and ecma.</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
 Because then you know<br>
you have a function, and thus a &quot;length&quot; property, [[Call]] property,<br>
etc.<br></blockquote><div><br></div><div>y</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
And that brings me to my next point: AIUI, host objects have two<br>
types. We discussed this before...<br>
(searching archives...)<br>
<br>
| The specification allows for two types of host objects:<br>
|  * host objects as native objects<br>
|  * host objects as not native objects (does not use<br>
| native semantics)<br></blockquote><div><br></div><div>Link please? IIRC, this part of the conversation was subsequently falsified. &quot;host&quot; and &quot;native&quot; are disjoint. &quot;host&quot; simply means not &quot;native&quot;. The first bullet above makes no sense.</div>
<div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
and<br>
<br>
|  While the specification does not preclude the possibility that a host<br>
|  object may be implemented with native semantics, it nonetheless<br>
|  defines a host object:<br>
<br>