@Andrea

Here is a very nice and very recent example of what am I talking
about, please find it  in the thread :  "Error in attr when adding
function to Object.prototype Options " ...

The proverbial Object.prototype ;o)  Please go and explain to the
developer who started this thread, why is jQuery not to blame that it
does not work in presence of Object.prototype abuse.
He is blaming jQuery and everyone who tried to explain why is there no
logic in extending Object.prototype. He will rather have it, and not
use the jQuery.

I (usually) do not waste time in that kind of discussions and just
place: for ( var j in Object,prototype ) delete Object.prototype[j] ;
on the top of "my" jQuery file. Which then I impose ;o)

--DBJ

On May 17, 2:46 pm, Andrea Giammarchi <andrea.giammar...@gmail.com>
wrote:
> jQuery is a library, not a language ... new $ where $ return a new something
> else is allowed by JavaScript specs ... it is not an error, syntax speaking,
> it is just like people using whatever.toString() rather than "" + whatever
> ... you are creating a drama over a truly simple and common mistake for
> unskilled JS developers but still, it does not harm anybody and if the
> application does not work is not because of new $.
>
> I am sure you have hundreds of valid arguments about their bad practices,
> but tell them that their code is crap and cannot work because new $ is
> allowed ( by JavaScript itself, it is NOT jQuery ) is an error as well.
>
> It is not about JavaScript panorama only, there are crap developers for evey
> languages and actually truly skilled developers are rare but nobody cares
> that much ... I see horrors in famouse PHP CMS every day but these CMS are
> famous .... I have seen crappy logic in pieces of Zend Framework but it is
> suppose to be enterprise .... I cannot blame anybody using a programming
> language in a bad way as long as results are somehow reached ... I agree
> that this would have been a better world if every paid developers was truly
> senior but I cannot find a single argument in this thread about jQuery,
> sorry.
>
>
>
> On Sun, May 17, 2009 at 2:00 PM, DBJDBJ <dbj...@gmail.com> wrote:
>
> > 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:
>
> ...
>
> read more »- 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to