<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jul 2, 2009, at 10:12 PM, Drew Wilson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">I had another question - I'm looking at JSWorkerConstructor code, but this pattern exists elsewhere as well:<div><br></div><div><div>JSWorkerConstructor::JSWorkerConstructor(ExecState* exec)</div><div>&nbsp;&nbsp; &nbsp;: DOMObject(JSWorkerConstructor::createStructure(exec-&gt;lexicalGlobalObject()-&gt;objectPrototype()))</div> <div>{</div><div>&nbsp;&nbsp; &nbsp;putDirect(exec-&gt;propertyNames().prototype, JSWorkerPrototype::self(exec, exec-&gt;lexicalGlobalObject()), None);</div><div><b>&nbsp;&nbsp; &nbsp;putDirect(exec-&gt;propertyNames().length, jsNumber(exec, 1), ReadOnly|DontDelete|DontEnum);</b></div> <div>}</div><div><br></div>What is the purpose of the second putDirect() call? I don't see this in other constructors like JSXMLHttpRequestConstructor, but I do see it in things like JSOptionConstructor and JSAudioConstructor.</div> <div><br></div><div>At first I thought it was just some kind of copy/paste error, but now I'm not so sure given how many files it's found in.</div></blockquote></div><br><div>In theory, JavaScript host functions are supposed to have a "length" property that gives the expected number of arguments. Web IDL might specify what it's supposed to be. The fact that we are inconsistent is likely because this is very very unimportant to actual Web compatibility.</div><div><br></div><div>&nbsp;- Maciej</div><div><br></div></body></html>