"... If a user uses new $ this user simply does not truly understand/ know JavaScript but fortunately will not harm anybody..."
No it wont, unless this user is a team leader and starts blaming jQuery on everything. And this happens much more than anyone here (it seems) realises. But. This is another subject. PS: jQuery.fast = false ; jQuery.error_code = 0xABCD ; function(selector, context) { if ( ! jQuery.fast) if(this instanceof jQuery) throw new Error( jQuery.error_code, "Can not new $()"); return new jQuery.fn.init(selector, context); } On May 14, 2:59 pm, Andrea Giammarchi <andrea.giammar...@gmail.com> wrote: > 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 -~----------~----~----~----~------~----~------~--~---