On Dec 10, 2009, at 9:19 PM, Mark Miller wrote:
On Thu, Dec 10, 2009 at 9:05 PM, Maciej Stachowiak <[email protected]>
wrote:
It looks like I plied too many clauses and prepositional phrases
into once
sentence. Let me try to rephrase:
If you want to emulate a DOM object that has catchall properties,
then it
needs to return true for hasOwnProperty() for the things that
should be own
properties. If you want to build that emulation in pure ECMAScript
(perhaps
as a security façade), then you need a catchall mechanism that lets
the
object appear to have own properties as seen through
hasOwnProperty. It
seems like the proposed mechanism as described does not allow this -
assuming I understood your initial comment quoted above correctly.
Good. You did understand me correctly. Now that I understand you, I
agree that this is a design goal of our mechanism.
Before proposing a fix, let me check if I understand the nature of the
problem. Are you saying that, given that d either is a DOM object with
an own property "name" or d is an emulation of such a DOM object, that
not only must
d.hasOwnProperty(name)
be true, but so must
Object.prototype.hasOwnProperty.call(d, name)
I'm a little less confident of the latter than the former. However,
Google Code Search finds a number of hits for
Object.prototype.hasOwnProperty.call that appear to be operating on
potentially arbitrary objects and property names. At least some of the
JavaScript code in question looked like it might be actually deployed
on the Web.
? I think I agree this is a reasonable requirement, since many JS
programmers have learned to call hasOwnProperty "statically" in this
manner. What about Object.prototype.propertyIsEnumerable? In the
current state of our proposal, it is as meta as
Object.prototype.hasOwnProperty. Before fixing
Object.prototype.hasOwnProperty, I'd like a better sense of whether
c needs to be fixed as well.
Thanks.
Google Code Search sees this pattern appearing in a number of places,
some of which are JavaScript libraries (though others seem like code
bases that could feasibly be updated):
http://www.google.com/codesearch?q=Object.prototype.propertyIsEnumerable.call&hl=en&btnG=Search+Code
Regards,
Maciej
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss