Allow me to be very clear: Issue is in MOUNTAIN of legacy javascript/css/html ... Company X decides to improve its "portal" or whatever horrid pile of sugar they might have amassed, and then yet another team is made to do it. Which usually consist of visual basic/delphi/sql/asp "developers" who are all avid followers of jQuery. They simply include jQuery in these pages , and then ... nothing works. Then they struggle for approx few weeks and just then they declare that jQuery is "very bad" and then they either revert back to ASP or JSP or whatever horros you can think of. But. Minority admits they need to learn a bit more and then they call people in to help them out. This is where we usaly come in. And this is where we use my version of jQuery to show them where are they making mistakes and for us to understand what is going on. And then "fun" starts when the legacy code has to be removed/destroyed/ forgotten. In those moments I would like Ricardo and Andrea to stand in front of these (by now highly annoyed) managers and developers and tell them :
".. jQuery does it work as it's supposed to, it's not it's duty to enforce good practices ... or alert users of javascript syntax errors..." What is the issues here is the jQ usage patterns not jQ itself. And this is a very big mountain to climb for a very big portion of developers. Number of people who are beyond intermediate skills in javascript+css, is in reality very very small ... -- DBJ On May 16, 12:17 pm, Ricardo <ricardob...@gmail.com> wrote: > Well, you shouldn't let your clients mess with your javascript, minify > it before deploying. Anything that happens is their own problem - that > is, if you're not hired to do it. > > jQuery does it work as it's supposed to, it's not it's duty to enforce > good practices (wishful thinking) or alert users of javascript syntax > errors. > > On May 15, 8:03 pm, DBJDBJ <dbj...@gmail.com> wrote: > > > > > I have only clients no boses, who blame it on jQuery .... until they > > are caught that is ;o) > > I am catching them with jQ version I have "adorned" with this kind of > > checks like the one we are discussing here. > > You will be amazed (same as me) what are javascript/css/html newcomers > > capable of doing. > > One more check I am going to add is this one to stop them doing new $ > > () ... > > > Thanks > > > --DBJ > > > On May 15, 10:43 am, Andrea Giammarchi <andrea.giammar...@gmail.com> > > wrote: > > > > Tell your head of "whatever" that a title in a contract does not necessary > > > mean extraordinary skills and if he would like to improve his JavaScript > > > knowledge he is more than welcome in this ml ( probably more as reader > > > ... ) > > > anyway ... > > > > function init(selector, context){ > > > if(this instanceof jQuery) > > > throw new Error( jQuery.error_code, "Can not new $()"); > > > return new jQuery.fn.init(selector, context); > > > > }; > > > > function jQuery(selector, context) { > > > return jQuery.fast ? > > > new jQuery.fn.init(selector, context) : > > > init.call(this, selector, context) > > > ; > > > > }; > > > > Conditional is a bit faster than an if but still it is something that does > > > not make sense because as I said the nature of the jQuery callback is > > > dual ( > > > both function/constructor ... it does not matter which way you call it, > > > the > > > result will always be an instance of jQuery, if "you" like weist time > > > writing an alread implicit "new" everywhere, it cannot be a jQuery issue, > > > do > > > you agree? ) > > > > On Fri, May 15, 2009 at 10:20 AM, Daniel Friesen > > > <nadir.seen.f...@gmail.com>wrote: > > > > > ;) I still see an if statement there, heh. > > > > > I prefer the conditional comments + build system approach. > > > > > ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name] > > > > > DBJDBJ wrote: > > > > > "... 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- Hide quoted text - > > - Show quoted text - --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---