John J Barton wrote:
On Wed, May 9, 2012 at 2:22 PM, Brendan Eich<bren...@mozilla.org>  wrote:
As Crock said, the problem programmers face is "I have a value, I want to
treat it as an object and get a property (call a method, etc.). How do I
test is-this-an-object so that I can use dot without worrying about that
throwing right away on null left-hand side?"

Yes, but ... why not
    if (foo) {
       foo.bar()
    }
or one of its variants? I suppose that
   if (typeof foo === 'object') { ...
helps in the case the your caller sent a string etc, but if this is
your goal, then why not use
   if (foo&&  foo.bar) {
and avoid other left-hand side problems?

I like falsy tests but in really generic code, as you suggest, primitive falsy values could creep in and should work.

Testing for the wanted property being truthy may not be enough (if it must be callable) but at much production code does not have to guard against null because of guaranteed initialization or small-world codebase rules that fit in maintainers' heads.


(FWIW I don't really think this is a big deal one way or another).

Agreed. Adding Object.isObject this late won't help for downrev code and the polyfill, even though trivial, is probably not worth the trouble. My gut says so, anyway -- different developers may disagree.

I think we should consider Object.isObject just because the typeof null change replaced it, but 1JS killed that replacement. Also gives Object.isValue and Array.isArray some company ;-).

/be

jjb

/be

John J Barton wrote:
On Tue, May 8, 2012 at 6:07 PM, Brendan Eich<bren...@mozilla.org>    wrote:
Object class reflection is frowned upon in Smalltalk for a reason. We
want
protocols, structural conventions -- not nominal type tags. Or so I
think!
Perhaps it would be helpful if someone made the case for typeof null
=== 'null'.

To me typeof null === 'object' is fine. It makes null a value in the
space of 'object'. In practice I see 'null' used to mean "I know this
reference (usually an argument) should be an object; I want to pass
nothing but signal that I really did mean to pass nothing." The status
quo allows this and it seems enough work for null to do for us.

Are there new things I can do if I now have a new answer to the
'typeof' question?

jjb
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

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

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

Reply via email to