OK, in this case I am sorry and forget my previous comment, I will eventaully talk about this with Caja people.
Best Regards On Wed, May 20, 2009 at 10:45 PM, John Resig <[email protected]> wrote: > Actually, if I remember correctly, new is explicitly required in order to > have jQuery work with Caja (you can't do just String() or Number() or > Object() or Function() you must include 'new' in front of all of them). We > had to change some other methods to match this, previously. > > --John > > > > On Wed, May 20, 2009 at 5:38 PM, Andrea Giammarchi < > [email protected]> wrote: > >> John, perfect except the new. >> The Function itself returns an anonymous function. new in front of a >> function like this: >> >> var o = new function(){ >> return function(){}; >> }; >> >> simply means that o will bhe the function and new will be ignored (if a >> function return an instance of something, it does not matter if you use new >> before or not) >> >> Accordingly, new Function is a common mistake, unless somebody >> demonstrates that it makes logically or practically sense :-) >> >> quick patch, remove new, just Function(whatever)(); >> >> >> >> On Wed, May 20, 2009 at 10:29 PM, John Resig <[email protected]> wrote: >> >>> Ticket filed: >>> http://dev.jquery.com/ticket/4680 >>> >>> Fix landed: >>> http://dev.jquery.com/changeset/6361 >>> >>> --John >>> >>> >>> On Wed, May 20, 2009 at 10:24 AM, John Resig <[email protected]> wrote: >>> >>>> Ok, it all sounds in order to me - someone want to file a ticket? >>>> http://dev.jquery.com/newticket >>>> >>>> --John >>>> >>>> >>>> >>>> On Wed, May 20, 2009 at 10:04 AM, mike.helgeson < >>>> [email protected]> wrote: >>>> >>>>> >>>>> The YUI compressor does not seem complain about using the Function >>>>> technique. >>>>> >>>>> (function(){ >>>>> >>>>> function evaluate( data ){ >>>>> return Function("return "+( data ) )(); >>>>> }; >>>>> >>>>> })(); >>>>> >>>>> becomes... >>>>> >>>>> (function(){function A(B){return Function("return "+(B))()}})(); >>>>> >>>>> >>>>> On May 20, 9:06 am, John Resig <[email protected]> wrote: >>>>> > Has anyone been able to figure out if YUIMin still behaves as you >>>>> would >>>>> > expect it to? >>>>> > >>>>> > --John >>>>> > >>>>> > On Wed, May 20, 2009 at 6:48 AM, Andrea Giammarchi < >>>>> > >>>>> > [email protected]> wrote: >>>>> > > Ok, the reason eval is so slow is because of FireBug, it costed 17 >>>>> seconds >>>>> > > with FireBug enabled while FireBug seems to do not affect Function >>>>> execution >>>>> > > (which makes Function against better than eval). >>>>> > >>>>> > > In any case, Function is faster or exactly fast as eval is, even in >>>>> > > Internet Explorer, at least in my tests. >>>>> > >>>>> > > this is a truly simple readapted test case: >>>>> > >>>>> > > <!DOCTYPE html> >>>>> > > <script type="text/javascript"> >>>>> > > portable = (function(msg, i, interval){ >>>>> > > function timeout(){ >>>>> > > alert(msg.join("\n")); >>>>> > > msg = []; >>>>> > > i = 0; >>>>> > > }; >>>>> > > return { >>>>> > > log:function(test){ >>>>> > > msg[i++] = test; >>>>> > > clearTimeout(interval); >>>>> > > interval = setTimeout(timeout, 100); >>>>> > > } >>>>> > > } >>>>> > > })([], 0, 0); >>>>> > > var count = 10000, o = null, i = 0, jsonString = >>>>> > > >>>>> '{"value":{"items":[{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3},{"x":1,"y":2,"z":3}]},"error":null}'; >>>>> > > var beginTime = new Date(); >>>>> > > for ( i = 0; i < count; i++ ) >>>>> > > o = eval( "(" + jsonString + ")" ); >>>>> > > portable.log( "eval:" + ( new Date() - beginTime ) ); >>>>> > > var beginTime = new Date(); >>>>> > > for ( i = 0; i < count; i++ ) >>>>> > > o = new Function( "return " + jsonString )(); >>>>> > > portable.log( "new Function:" + ( new Date() - beginTime ) ); >>>>> > > var beginTime = new Date(); >>>>> > > for ( i = 0; i < count; i++ ) >>>>> > > o = Function( "return " + jsonString )(); >>>>> > > portable.log( "Function:" + ( new Date() - beginTime ) ); >>>>> > > var beginTime = new Date(); >>>>> > > var callback = Function( "return " + jsonString ); >>>>> > > for ( i = 0; i < count; i++ ) >>>>> > > o = callback(); >>>>> > > portable.log( "precompiled Function:" + ( new Date() - beginTime ) >>>>> ); >>>>> > > if(this.JSON){ >>>>> > > var beginTime = new Date(); >>>>> > > for ( i = 0; i < count; i++ ) >>>>> > > o = JSON.parse(jsonString); >>>>> > > portable.log( "native:" + ( new Date() - beginTime ) ); >>>>> > > }; >>>>> > > </script> >>>>> > >>>>> > > Let me know what you think. >>>>> > >>>>> > > Regards >>>>> > >>>>> > > On Wed, May 20, 2009 at 7:43 AM, Andrea Giammarchi < >>>>> > > [email protected]> wrote: >>>>> > >>>>> > >> As I said, Function does not do scope resolution except the global >>>>> one so >>>>> > >> in my opinion should be always preferred for JSON evaluations. >>>>> Firefox does >>>>> > >> not care about implicit returned value plus brackets plus scope, >>>>> it simply >>>>> > >> create the anonimous function doing a syntax check and returns >>>>> errors only >>>>> > >> at call time so if there are no errors the precompiled funcion >>>>> will be like >>>>> > >> a manual one, time for parsing syntax is then one against every >>>>> eval call. >>>>> > >> To be fair, that bench make sense declaring the function once and >>>>> simply >>>>> > >> calling it inside the for to always return the same object. >>>>> Unfortunately >>>>> > >> this is not a real world case. >>>>> > >>>>> > >> On May 20, 2009 7:33 AM, "Michael Geary" <[email protected]> wrote: >>>>> > >>>>> > >> Function( 'return ' + data )() is also MUCH faster in Firefox >>>>> than eval. >>>>> > >>>>> > >> In a test case of JSON data containing 1000 names and addresses >>>>> (about >>>>> > >> 112KB), eval() takes a full second to execute on my machine in >>>>> Firefox 3. On >>>>> > >> all other browsers (including IE!) it takes hardly any time at >>>>> all. >>>>> > >>>>> > >> The Function version takes essentially no time in Firefox. (Didn't >>>>> test it >>>>> > >> in other browsers.) >>>>> > >>>>> > >> -Mike >>>>> > >>>>> > >> ------------------------------ >>>>> > >> *From:* [email protected] [mailto: >>>>> [email protected]] >>>>> > >> *On Behalf Of *John Resig >>>>> > >> *Sent:* Tuesday, May 19, 2009 4:20 PM >>>>> > >> *To:* [email protected] >>>>> > >> *Subject:* [jquery-dev] Re: window['eval']() in rhino >>>>> > >>>>> > >> > I don't remember the original discussion/change, off-hand. If >>>>> YUIMin is >>>>> > >> still able to generate an ... >>>>> >>>>> >>>> >>> >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---
