<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>Dziudek's jogger :: komentarze do wpisu &quot;MooTools 1.2 - tablice w MooTools cz.2&quot;</title><link>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/</link><description>Wpisy z dziennika internetowego Jogger, wspomaganego przez Jabbera</description><lastBuildDate>Wed, 23 May 2012 05:12:47 +0200</lastBuildDate><generator>JoggerPL</generator><item><title>Rafael</title><link>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209132</link><description>W zasadzie metoda Array.extend działa prawie tak samo jak natywna metoda Array.concat
var a=[1, 2, 3, 4], b=a.concat([5, 6, 7, 8]);
Jedyna różnica polega na tym, że .extend modyfikuje oryginalną tablicę, a .concat zwraca nową tablicę stworzoną na podstawie oryginalnej i tablicy przekazanej jako argument i w dodatku ma więcej możliwości (można od razu dołączyć więcej tablic, czy całą listę pojedynczych wartości).

Swoją drogą dziwi mnie trochę fakt, że implementacja tej metody korzysta z pętli (okolice linii 483)

extend: function(array){
   for (var i = 0, j = array.length; i &lt; j; i++)
      this.push(array[i]);
   return this;
},
można to zapisać jedną instrukcją
extend: function(array){
   this.push.apply(this,array);
   return this;
},

Przyznam się, że nie badałem sprawy, jest to tylko moja luźna opinia. Może był jakiś konkretny powód (wydajność? Ciężko uwierzyć)

</description><pubDate>Tue, 08 Jul 2008 22:10:13 +0200</pubDate><guid>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209132</guid></item><item><title>Dziudek</title><link>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209138</link><description>@Rafael &amp;#8211; osobiście mam dwie teorie ;) Albo na jakiejś dziwnej przeglądarce typu IE6 to nie działało (choć cudów w tym kodzie nie ma, ale IE6 (a nawet IE7) na banalniejszych fragmentach się wykłada), albo też po prostu zespół MooTools niezbyt się przykładał do Natives &amp;#8211; generalnie o ile pamiętam Natives to jedna z bardziej zaniedbanych sekcji w MooTools, bo dość rzadko ją aktualizowali ;)

</description><pubDate>Tue, 08 Jul 2008 22:14:59 +0200</pubDate><guid>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209138</guid></item><item><title>Rafael</title><link>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209157</link><description>Dla pewności sprawdziłem w standardzie ECMA-Scriptu, czy .push przyjmuje dowolnie długą listę argumentów .push(arg1, arg2, ..., argN) i rzeczywiście tak jest, więc nie jest to jakieś rozszerzenie Gecko, czy coś w tym stylu.

Przeprowadziłem szybki test. Wygląda na to, że jednak mamy do czynienia z sprawą wydajności, choć różnica czasowa nie była tak wielka. Z jednej strony, ciężko mi uwierzyć, że natywna metoda wywołana metodą apply działa wolniej od pętli+.push&amp;#8230; ale po krótkim namyśle &amp;#8211; jednak wywołanie .apply też coś kosztuje&amp;#8230; trzeba w końcu całą tablicę przerobić na argumenty metody .push (nie wiem, jak to w silniku jest realizowane, ale na pewno coś na ten wzór) i w pętli wykonywanie czynności dodawania elementów.

Może jednak ta część Mootoolsa nie jest aż tak zaniedbana ;-P

</description><pubDate>Tue, 08 Jul 2008 22:47:31 +0200</pubDate><guid>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209157</guid></item><item><title>Dziudek</title><link>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209158</link><description>@Rafael &amp;#8211; może nie jest zaniedbana, ale na pewno sprawia wrażenie takiej &amp;#8222;jak dobrze działa to lepiej nie ruszajmy&amp;#8221; :) Dzięki, że to zweryfikowałeś ;) Dla programistów MooTools jednak nawet te ułamki sekund robią różnicę zwłaszcza, że przy większej częstości użycia metody robią się z nich sekundy itd. ;)

</description><pubDate>Tue, 08 Jul 2008 22:50:29 +0200</pubDate><guid>http://blog.dziudek.pl/2008/07/08/mootools-1-2-tablice-w-mootools-cz-2/#c1209158</guid></item></channel></rss>
