Catchall invocation for 'null' and 'undefined' (or: how to be a disruptive influence in 3 easy steps)
William Edney
bedney at technicalpursuit.com
Fri May 15 10:45:25 PDT 2009
All -
I sent this about 1.5 weeks ago, but have gotten no responses. I can
attribute this to 2 possible items:
1. I made the mistake of replying to an existing message so this one
got buried under a thread it shouldn't have.
2. Folks were so horrified as to what I was asking for that they
really just wished I would go away :-).
I'll repeat the message here. If the answer is #2, please let me know
and I'll crawl back under my rock :-).
Cheers,
- Bill
All -
Well, Sister Eugenia always did say I was a disruptive influence in
grade school - guess I haven't changed much :-).
Let me throw another idea into the mix and churn the pot a bit more.
Many moons ago when I was a Smalltalker, I always liked the fact that
'nil' in Smalltalk was a singleton instance of UndefinedObject... and
you could add methods to UndefinedObject :-).
Like... doesNotUnderstand.
When I switched to JS, I found out that 'null' and 'undefined' were
'special' and weren't instances of anything I could add methods to
(cue wailing and gnashing of teeth).
I always thought it would be most interesting if the following were
true: 'null' was the singleton instance of the Null type and
'undefined' was the singleton instance of the Undefined type.
Then, I could do the following (which would have saved me a lot of
debugging time over the years):
(Using the older __noSuchMethod__ syntax):
Null.prototype.__noSuchMethod__ = function (id, args)
{
alert('you were a bad boy and tried to send ' + id + ' to null');
}
Undefined.prototype.__noSuchMethod__ = function (id, args)
{
alert('you were a bad boy and tried to send ' + id + ' to undefined');
}
My business partner Scott has bugged Brendan about this in the past
and he mentioned that ES3 was too set in its ways to do anything like
this, but I figured maybe with Harmony on the horizon, the issue could
be revisited :-). I have no idea regarding the implications of such a
change and therefore leave it to you all to consider those implications.
Thoughts?
Cheers,
- Bill
More information about the es-discuss
mailing list