I think this is what Garrett is referring to:

js> function f() {}
js> f.prototype.foo = "blah";
blah
js> var x = new f();
js> print(x.propertyIsEnumerable("foo"));
false
js> for (var n in x) print(n);
foo

And I have to agree with him, the method is confusing.  Based on its  
name, I'd expect it to return true if the property can be enumerated  
via for-in loop on the given object, regardless of where the property  
exists in the prototype chain.


On Sep 10, 2007, at 4:27 PM, Brendan Eich wrote:

> On Sep 10, 2007, at 2:21 PM, Garrett Smith wrote:
>
>> And my point was that it appears to duplicate functionality of
>> hasOwnProperty in a differently named method.
>
> The two functions are different:
>
> js> var Op = Object.prototype;
> js> Op.foo = 42;
> 42
> js> print(Op.hasOwnProperty('foo'), Op.propertyIsEnumerable('foo'));
> true true
> js> print(Op.hasOwnProperty('toString'), Op.propertyIsEnumerable
> ('toString'));
> true false
>
>> The fact that the method
>> was called propertyIsEnumerable instead of isPropertyEnumerable is  
>> not
>> great, but the way propertyIsEnumerable is designed is confusing to
>> developers.
>
> I've never heard that complaint directly, or in a
> bugzilla.mozilla.org report. Can you cite complaints anywhere on the
> web? I believe you, but it would be good to have evidence.
>
>> propertyIsEnumerable and hasOwnProperty are interchangeable (in
>> conforming hosts, not JScript)
>
> This statement is false.
>
> /be
> _______________________________________________
> Es4-discuss mailing list
> Es4-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es4-discuss

_______________________________________________
Es4-discuss mailing list
Es4-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es4-discuss

Reply via email to