On Nov 18, 2008, at 11:00 AM, Mark S. Miller wrote:
On Tue, Nov 18, 2008 at 3:32 AM, Maciej Stachowiak <[EMAIL PROTECTED]>
wrote:
Host functions in the DOM do not generally have a "prototype"
property, because they generally cannot be invoked as constructors.
However, I think all functions that operate on functions should
accept these native functions. I think this is best dealt with by
making the bind algorithm more generic.
More generic than the one in the Kona draft? How? As written, it
will curry anything with a [[Call]] property. It conditions whether
to use the 'prototype' and 'length' properties of the original based
on whether the original's [[Class]] is "Function". And it will curry
the original's [[Construct]] property only if the original has a
[[Construct]] property. I had hoped we could agree to make it less
generic -- all these conditionals are troublesome. But how would you
make it more generic?
If the current version doesn't assume anything about the possible
value and attributes of the "prototype" property then that shouldn't
be a problem.
I also don't see a problem with David-Sarah's suggestion of
forbidding host objects from having [[Class]] "Function". Most
places in the spec care only about whether something is callable
(has a [[Call]] property), not whether it has [[Class]] "Function".
It seems arbitrary to me that functions implemented in native code
("internal functions" in ECMA-262 terms) that are part of the
ECMAScript spec must have the [[Class]] "Function", but any that are
not specified there (and are perhaps specified elsewhere) would be
required not to have [[Class]] "Function". Why should Math.random be
required to have [[Class]] "Function", but document.getElementById or
Math.myImplementationExtension be required not to? Do you really think
it makes sense to determine whether something is a function by whether
it is mentioned in the ECMAScript spec?
(Note also that Math.random has [[Class]] "Function" but not a
"prototype" property.)
Regards,
Maciej
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss