to do that you need to change the contructor:

function(selector, context) {
    if(this instanceof jQuery)
        throw new Error("Can not new $()");
    return new jQuery.fn.init(selector, context);
}

this means an extra if for each jQuery call, something not that welcome for
performances reason. At the same time, jQuery itself relies in this
JavaScript peculiarity, so I would not create "conflicts" between jQuery
developers and users.

If a user uses new $ this user simply does not truly understand/know
JavaScript but fortunately will not harm anybody.


On Thu, May 14, 2009 at 10:23 AM, DBJDBJ <dbj...@gmail.com> wrote:

>
>
> Ah, new $, is possible and therefore not barred ... Left in there as a
> sort of a land-mine for the newcomers ? Or as an esoteric test for GC
> developers ? Highly useless it seems to me.
>
> Back to reality and jQuery. $ is defined as:
>
> function(selector, context) {
>            // The jQuery object is actually just the init constructor
> 'enhanced'
>            return new jQuery.fn.init(selector, context);
>        }
>
> Maybe I am just searching for ECMA "harmony", but will $() definition
> that throws an exception if new-ed , be usefull  :
>
> try {
>        new $ ;
> } catch ( x )
> {
>    // x. message == "Can not new $()"
> }
>
> Au-contraire : will this hurt anyone ? Is exception throwing
> porgramming idiom damaging for jQuery?
>
> --DBJ
>
> PS: if Python was choosen as a Netscape scripting language,  World
> would be a better place ... If nothing else its name is less
> ridiculous ... ;o)
>
> On May 14, 9:04 am, Andrea Giammarchi <andrea.giammar...@gmail.com>
> wrote:
> > it's called JavaScript :D
> >
> > jokes a part, every function is a constructor as well so new function is
> > always valid.
> >
> > If the function returns an object, it does not matter which "new" is
> because
> > it will be an instance of returned object one.
> >
> > if it is a primitive it will simply be lost:
> >
> > var a = new function(){return 123;};
> > // a is an instance of anonymous function
> >
> > this allows us to create Python like initializations:
> >
> > function PythonLike(){
> >     return this instanceof arguments.callee ? this : new
> arguments.callee;
> >
> > };
> >
> > alert(PythonLike() instanceof PythonLike);
> > alert(new PythonLike() instanceof PythonLike);
> >
> > true in both cases
> >
> > jQuery returns a new jQuery.prototype.init where init method shares the
> same
> > prototype ... better now? :-)
> >
> > On Wed, May 13, 2009 at 11:57 PM, DBJDBJ <dbj...@gmail.com> wrote:
> >
> > > Why is this allowed :
> >
> > > var jq = new $ ;
> >
> > > Does it matter?
> >
> > > -- DBJ
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to