aboutsummaryrefslogtreecommitdiff
path: root/files/pl/web/javascript/nowości_w_javascript_1.8/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/pl/web/javascript/nowości_w_javascript_1.8/index.html')
-rw-r--r--files/pl/web/javascript/nowości_w_javascript_1.8/index.html135
1 files changed, 135 insertions, 0 deletions
diff --git a/files/pl/web/javascript/nowości_w_javascript_1.8/index.html b/files/pl/web/javascript/nowości_w_javascript_1.8/index.html
new file mode 100644
index 0000000000..bee5db7813
--- /dev/null
+++ b/files/pl/web/javascript/nowości_w_javascript_1.8/index.html
@@ -0,0 +1,135 @@
+---
+title: Nowości w JavaScript 1.8
+slug: Web/JavaScript/Nowości_w_JavaScript_1.8
+tags:
+ - JavaScript
+ - Strony_wymagające_dopracowania
+ - Wszystkie_kategorie
+translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8
+---
+<div>{{ Fx_minversion_header(3) }}</div>
+
+<p>Obsługa języka JavaScript w wersji 1.8 ma zostać wprowadzona wraz z wydaniem silnika Gecko 1.9 (który ma się znaleźć w programie <a href="/pl/docs/Firefox_3_dla_programistów" title="Firefox_3_dla_programistów">Firefox 3</a>). Jest to aktualizacja mniej znacząca niż <a href="/pl/docs/Nowości_w_JavaScript_1.7" title="Nowości_w_JavaScript_1.7">JavaScript 1.7</a>; zmiany odpowiadają modyfikacjom dokonanym ostatnio w języku ECMAScript 4/JavaScript 2. W tym wydaniu zawarte będą wszystkie nowe funkcje wprowadzone w wydaniach <a href="/pl/docs/Nowości_w_JavaScript_1.6" title="Nowości_w_JavaScript_1.6">JavaScript 1.6</a> i <a href="/pl/docs/Nowości_w_JavaScript_1.7" title="Nowości_w_JavaScript_1.7">JavaScript 1.7</a>.</p>
+
+<p>Aby zapoznać się z postępem prac nad rozwojem obsługi języka JavaScript w wersji 1.8, zobacz {{ Bug(380236) }}.</p>
+
+<h3 id="Korzystanie_z_j.C4.99zyka_JavaScript_1.8" name="Korzystanie_z_j.C4.99zyka_JavaScript_1.8">Korzystanie z języka JavaScript 1.8</h3>
+
+<p>Aby skorzystać z nowych własności języka JavaScript 1.8 w kodzie HTML, należy użyć następującego kodu:</p>
+
+<pre class="eval"> &lt;script type="application/javascript;version=1.8"&gt; ... twój kod ... &lt;/script&gt;
+</pre>
+
+<p>W przypadku korzystania z <a href="/pl/docs/Wprowadzenie_do_powłoki_JavaScript" title="Wprowadzenie_do_powłoki_JavaScript">powłoki JavaScript</a>, komponentów XPCOM języka JavaScript lub elementów <code>&lt;script&gt;</code> w języku XUL automatycznie używana jest najnowsza wersja JS (JS1.8 w Mozilli 1.9); patrz {{ Bug(381031) }} i {{ Bug(385159) }}.</p>
+
+<p>W przypadku korzystania z funkcji, w których wymagane jest użycie nowych słów kluczowych <code>yield</code> i <code>let</code>, należy określić, że używana ma być wersja języka 1.7 lub nowsza — w istniejącym kodzie te słowa kluczowe mogą być bowiem nazwami zmiennych lub funkcji. Funkcje, w których nie wprowadzono nowych słów kluczowych (takie jak <a href="#Wyra.C5.BCenia_generator.C3.B3w">wyrażenia generatorów</a>), mogą być używane bez określania wersji języka JavaScript.</p>
+
+<h3 id="Domkni.C4.99cia_wyra.C5.BCe.C5.84" name="Domkni.C4.99cia_wyra.C5.BCe.C5.84">Domknięcia wyrażeń</h3>
+
+<p>Ta nowość to nic innego jak skrót do pisania prostych funkcji, dodający do języka konstrukcję podobną do <a class="external" href="http://pl.wikipedia.org/wiki/Rachunek_lambda">notacji lambda</a>.</p>
+
+<p><a href="/pl/docs/Nowości_w_JavaScript_1.7" title="Nowości_w_JavaScript_1.7">JavaScript 1.7</a> i starsze:</p>
+
+<pre class="eval"> function(x) { return x * x; }
+</pre>
+
+<p>JavaScript 1.8:</p>
+
+<pre class="eval"> function(x) x * x
+</pre>
+
+<p>Taka składnia pozwala pominąć nawiasy i wyrażenie <code>return</code> - są one dodawane automatycznie. Nie ma żadnej dodanej wartości w pisaniu z wykorzystaniem tej notacji, poza tym, że sam kod staje się krótszy.</p>
+
+<p><strong>Przykłady:</strong></p>
+
+<p>Skrót do podpinania nasłuchiwania zdarzeń:</p>
+
+<pre class="eval"> document.addEventListener("click", function() false, true);
+</pre>
+
+<p>Użycie nowej notacji w połączeniu z niektórymi funkcjami tablic z <a href="/pl/docs/Nowości_w_JavaScript_1.6" title="Nowości_w_JavaScript_1.6">JavaScript 1.6</a>:</p>
+
+<pre class="eval"> elems.some(function(elem) elem.type == "text");
+</pre>
+
+<h3 id="Wyra.C5.BCenia_generator.C3.B3w" name="Wyra.C5.BCenia_generator.C3.B3w">Wyrażenia generatorów</h3>
+
+<p>Ten dodatek pozwala na proste tworzenie generatorów (które opisano w <a href="/pl/docs/Nowości_w_JavaScript_1.7" title="Nowości_w_JavaScript_1.7">JavaScript 1.7</a>). Wcześniej konieczne byłoby stworzenie własnej funkcji zawierającej w sobie wyrażenie yield, jednak ten dodatek pozwala na użycie składni podobnej do <em>wyrażenia tablicowego/listowego</em> (ang. array/list comprehension) do stworzenia identycznego wyrażenia generatora.</p>
+
+<p>Wykorzystując <a href="/pl/docs/Nowości_w_JavaScript_1.7" title="Nowości_w_JavaScript_1.7">JavaScript 1.7</a> w celu stworzenia własnego generatora obiektu kod wyglądać mógłby następująco:</p>
+
+<pre class="eval"> function add3(obj) {
+
+ for ( let i in obj )
+ yield i + 3;
+ }
+
+ let it = add3(someObj);
+ try {
+ while (true) {
+ document.write(it.next() + "&lt;br&gt;\n");
+ }
+ } catch (err if err instanceof StopIteration) {
+ document.write("End of record.&lt;br&gt;\n");
+ }
+</pre>
+
+<p>W JavaScript 1.8 można pominąć tworzenie własnej funkcji generatora wykorzystując w zamian następujące wyrażenie generatora:</p>
+
+<pre class="eval"> let it = (i + 3 for (i in someObj));
+ try {
+ while (true) {
+ document.write(it.next() + "&lt;br&gt;\n");
+ }
+ } catch (err if err instanceof StopIteration) {
+ document.write("End of record.&lt;br&gt;\n");
+ }
+</pre>
+
+<p>Wyrażenia generatora mogą być także przesłane do funkcji jako wartości. To rozwiązanie jest szczególnie warte uwagi odkąd generatory uruchamiane są wyłącznie gdy są kategorycznie potrzebne (w przeciwieństwie do typowych sytuacji wykorzystujących wyobrażenie tablicy, gdzie tablice tworzone są wcześniej). Przykład pokazujący różnice w tych rozwiązaniach znaleźć można poniżej:</p>
+
+<p>Wykorzystując JavaScript 1.7 Wyrażenie Tablicowe</p>
+
+<pre class="eval"> handleResults([ i for ( i in obj ) if ( i &gt; 3 ) ]);
+
+ function handleResults( results ) {
+ for ( let i in results )
+ // ...
+ }
+</pre>
+
+<p>Wykorzystując JavaScript 1.8 Wyrażenia Generatora</p>
+
+<pre class="eval"> handleResults( i for ( i in obj ) if ( i &gt; 3 ) );
+
+ function handleResults( results ) {
+ for ( let i in results )
+ // ...
+ }
+</pre>
+
+<p>Znaczącą różnicą pomiędzy tymi dwoma przykładami jest to, iż dla wyrażeń generatora konieczne jest wykonanie pętli dla struktury 'obj' tylko raz, podczas gdy dla Wyrażenia Tablicowego konieczne jest wykonanie pętli raz w celu stworzenia wyobrażenia tablicy oraz drugi raz podczas iteracji po jej elementach.</p>
+
+<h3 id="Dodatkowe_zmiany_w_obiekcie_Array" name="Dodatkowe_zmiany_w_obiekcie_Array">Dodatkowe zmiany w obiekcie Array</h3>
+
+<p>W języku JavaScript 1.8 dostępne są dwie nowe metody iteracyjne obiektu <code><a href="/pl/docs/Dokumentacja_języka_JavaScript_1.5/Obiekty/Array" title="Dokumentacja_języka_JavaScript_1.5/Obiekty/Array">Array</a></code>:</p>
+
+<ul>
+ <li><code><a href="/pl/docs/Dokumentacja_języka_JavaScript_1.5/Obiekty/Array/reduce" title="Dokumentacja_języka_JavaScript_1.5/Obiekty/Array/reduce">reduce()</a></code> - wywołuje funkcję dla każdego elementu z tablicy i zachowuje wyniki z poprzednich wywołań.</li>
+ <li><code><a href="/pl/docs/Dokumentacja_języka_JavaScript_1.5/Obiekty/Array/reduceRight" title="Dokumentacja_języka_JavaScript_1.5/Obiekty/Array/reduceRight">reduceRight()</a></code> - wywołuje funkcję dla każdego elementu z tablicy i zachowuje wyniki z poprzednich wywołań, lecz w odwrotnej kolejności.</li>
+</ul>
+
+<h3 id="Changes_in_destructuring_for..in" name="Changes_in_destructuring_for..in">Zmiany z usuwaniem elementów tablicy w pętli for..in</h3>
+
+<p>TBD: mention <a href="/pl/docs/Nowości_w_JavaScript_1.7#Iterowanie_przez_obiekty" title="Nowości_w_JavaScript_1.7#Iterowanie_przez_obiekty">Nowości w JavaScript 1.7#Iterowanie przez obiekty</a> ({{ Bug(366941) }}).</p>
+
+<p><br>
+ <font><font face="Georgia, Times, Times New Roman, serif"><span style="font-size: 20px;"><strong>Nadchodzące zmiany</strong></span></font></font></p>
+
+<p><span style="line-height: inherit;">Zmiany w JavaScript 1.8 włączają również:</span></p>
+
+<ul>
+ <li>Kodowanie i dekodowanie danych w JSON.</li>
+ <li>Składnia funkcji Slice.</li>
+ <li>Generalized destructuring <code>for...in</code> (czy znaczy to coś innego niż <a href="#Changes_in_destructuring_for..in">#Changes in destructuring for..in</a> ? --<a href="/User:Nickolay" title="User:Nickolay">Nickolay</a> 10:52, 9 Wrzesień 2007 (PDT))</li>
+</ul>