toString + IE + for

2009.01.07. 09:17 stack

Nem gondoltam volna, hogy valamikor az Ext.override -ot is felül kell írni. Akasztjuk a hóhért:)

Az Object osztálynak van két speciális eljárása: a toString és a valueOf, első szövegként adja vissza az objektum tartalmát, míg a második valamilyen primitív értékként. Mindkét függvény felüldefiniálható, ám van egy olyan probléma, hogy IE alatt hiába definiáljuk felül ezeket, a for( i in obj ) ciklusnál nem lesz az iteráció része a felüldefiniált függvény.

for( var i in {a: 1, b: 2, toString: function() {return 3;}}) {
    alert( i );
}

Egy kicsivel valósabb példa:

myClass = function(text) {
    this.text = text;
}
Ext.override(myClass, {
    'toString': function() {
        return this.text;
    }
});
var a = new myClass('Hello World!');
alert( a ); // [object Object]

Szólj hozzá!

Címkék: override kipróbálom

lassú az eval

2008.11.24. 22:33 stack

Különböző mérési tesztek végzése közben arra a közhelyre jutottam, hogy az eval lassú, ám meglepődtem, hogy mennyire!? Például, ha egy egyszerű értékadást egymás után jó sokszor végrehajtjuk így is, úgy is, akkor közel ötször – hatszor (néhány alkalommal tizenötször) hosszabb futási időt kapunk eval használatával, mint nélküle: (Chrome-ban még durvább a különbség)

var start = new Date();
for (var i = 0; i < 100000; i++) { var a = 10; }
alert( new Date() - start );

var t = ['var start = new Date();',
'for (var i = 0; i < 100000; i++) { var a = 10; }',
'alert( new Date() - start );'];
eval( t.join('') );

Az egészben a probléma az, hogy sokszor használjuk az eval függvényt, leginkább azoknál az Ajax hívásoknál, ahol végrehajtandó scriptet kapunk eredményül.

Szólj hozzá!

Címkék: nem extjs eval benchmark kipróbálom

ExtJS blog, mi ez?

Az ExtJS egy JavaScript keretrendszer, melyet a blog írója elfogultan a legjobbnak tart, és ez a blog olyan apróságok gyűjteménye, melyek ExtJS használata közben felmerültek, eszébe jutottak...

Címkék

ajax (4) alignto (1) állás (3) analytics (1) anchorto (1) android (4) animate (2) array (9) auto (1) back button (1) beautifier (1) beforeevent (1) benchmark (1) blur (1) budapest.js (1) button (1) canvas (1) capture (1) case sensitive (1) center (1) change (1) cikkajánló (1) class (2) closure compiler (1) collapse (1) combobox (3) comment (1) console.log (2) contextmenu (2) core (2) count (1) css (15) csv (1) dataview (1) date (4) datefield (3) datepicker (1) debug (1) doksi (1) dragdrop (1) easing (1) eclipse (1) editor (1) element (5) error (5) eval (2) event (1) fejtörő (1) field (2) fieldset (1) filter (1) firefox (4) firefox extension (2) focus (3) fonts (1) fun (1) function (1) google (2) google chrome (1) grayscale (1) grid (4) group contact (1) header (3) height (2) hidden (1) hirek (2) history (1) htaccess (1) html5 (2) htmleditor (2) https (1) icon (3) id (2) ie (2) ie6 (1) ie9 (1) iframe (3) image (2) indexof (1) javascript (1) jquery (2) jslint (2) jsmin (1) json (7) keymap (1) kipróbálom (2) könyvajánló (2) label (1) layout (1) lint (1) log (1) loop (1) magyar (2) mandelbrot (1) mask (1) math (1) maxlength (1) mistake (1) mysql (5) napi szívás (16) nem extjs (12) node (1) nth child (1) number (1) off (5) offline (1) operator (1) override (20) pagesize (1) paging (2) panel (2) php (7) picker (1) plugin (3) pozicionálás (2) preload (1) print (1) propertygrid (1) pseudo (3) readonly (2) record (1) regexp (1) replace (1) resizable (1) rotate (1) round (1) scale (1) sencha touch (2) server (1) shuffle (1) slider (1) sort (3) sortable (1) store (2) string (7) sum (1) tabchange (1) tabpanel (1) tab key (2) tdd (1) template (1) textarea (2) textfield (1) textitem (1) theme (2) throw (1) timer (1) timestamp (1) title (2) toggle (1) toolbar (6) tools (1) total count (1) transparent (1) tree (1) treenode (1) trigger (1) truncate (1) try (1) ucfirst (1) undefined (2) unique (1) unload (1) urlencode (1) utf8 (2) verzió (1) video (1) viewer (1) viewport (2) visible (2) vtype (1) window (2) xtype (1) zindex (2)

Extjs.blog.hu - RSS

Kérdés?

süti beállítások módosítása