Skip to content

Commit ea8b09f

Browse files
author
Lukasz Kufel
committed
Polish translation.
Intro and object translated.
1 parent e9327b5 commit ea8b09f

File tree

13 files changed

+476
-1
lines changed

13 files changed

+476
-1
lines changed

doc/language.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"default": "en",
3-
"listed": ["en", "fi", "ru", "zh"]
3+
"listed": ["en", "fi", "ru", "zh", "pl"]
44
}
55

doc/pl/full_index.json

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
"title": "JavaScript Garden",
3+
"langTitle": "JavaScript Garden - ogród JavaScript po polsku",
4+
"description": "Przewodnik po dziwactwach i wadach języka JavaScript.",
5+
"sections": [
6+
{
7+
"title": "Wstęp",
8+
"dir": "intro",
9+
"articles": [
10+
"authors",
11+
"contributors",
12+
"translators",
13+
"hosting",
14+
"license"
15+
]
16+
},
17+
{
18+
"title": "Obiekty",
19+
"dir": "object",
20+
"articles": [
21+
"general",
22+
"prototype",
23+
"hasownproperty",
24+
"forinloop"
25+
]
26+
},
27+
{
28+
"title": "Funkcje",
29+
"dir": "function",
30+
"articles": [
31+
"general",
32+
"this",
33+
"closures",
34+
"arguments",
35+
"constructors",
36+
"scopes"
37+
]
38+
},
39+
{
40+
"title": "Tablice",
41+
"dir": "array",
42+
"articles": [
43+
"general",
44+
"constructor"
45+
]
46+
},
47+
{
48+
"title": "Typy",
49+
"dir": "types",
50+
"articles": [
51+
"equality",
52+
"typeof",
53+
"instanceof",
54+
"casting"
55+
]
56+
},
57+
{
58+
"title": "?Wnętrze?",
59+
"dir": "core",
60+
"articles": [
61+
"eval",
62+
"undefined",
63+
"semicolon"
64+
]
65+
},
66+
{
67+
"title": "Inne",
68+
"dir": "other",
69+
"articles": [
70+
"timeouts"
71+
]
72+
}
73+
]
74+
}

doc/pl/index.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"title": "JavaScript Garden",
3+
"langTitle": "JavaScript Garden - ogród JavaScript po polsku",
4+
"description": "Przewodnik po dziwactwach i wadach języka JavaScript.",
5+
"sections": [
6+
{
7+
"title": "Wstęp",
8+
"dir": "intro",
9+
"articles": [
10+
"authors",
11+
"contributors",
12+
"translators",
13+
"hosting",
14+
"license"
15+
]
16+
},
17+
{
18+
"title": "Obiekty",
19+
"dir": "object",
20+
"articles": [
21+
"general",
22+
"prototype",
23+
"hasownproperty",
24+
"forinloop"
25+
]
26+
}
27+
]
28+
}

doc/pl/intro/authors.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## Autorzy
2+
3+
Ten przewodnik jest dziełem dwóch uroczych użytkowników [Stack Overflow][1],
4+
[Ivo Wetzel][2] (Treść) oraz [Zhang Yi Jiang][3] (Projekt).
5+
6+
[1]: http://stackoverflow.com/
7+
[2]: http://stackoverflow.com/users/170224/ivo-wetzel
8+
[3]: http://stackoverflow.com/users/313758/yi-jiang

doc/pl/intro/contributors.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## Kontrybutorzy
2+
3+
- [Caio Romão][1] (Poprawki pisowni)
4+
- [Andreas Blixt][2] (Poprawki językowe)
5+
6+
[1]: https://github.com/caio
7+
[2]: https://github.com/blixt

doc/pl/intro/hosting.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## Hosting
2+
JavaScript Garden znajduje się na serwerach GitHub, ale dzięki wsparciu
3+
[Cramer Rozwoju] [1] posiadamy mirror na serwerze [JavaScriptGarden.info] [2].
4+
5+
[1]: http://cramerdev.com/
6+
[2]: http://javascriptgarden.info/

doc/pl/intro/index.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Wstęp
2+
**JavaScript Garden** jest rosnącą kolekcją dokumentów o najdziwniejszych
3+
częściach języka JavaScript. Dokumentacja pomaga uniknąć najczęściej popełnianych
4+
błędów, sybtelnych bugów, problemów wydajnościowych oraz złych praktyk, na które
5+
niedoświadczeni programiści JavaScript mogą natrafić próbując poznać tajniki tego
6+
języka.
7+
8+
JavaScript Garden **nie** ma na celu nauczyć Cię języka JavaScript. Podstawowa
9+
wiedza na temat języka jest wymagana do zrozumienia zagadnień poruszanych w tym
10+
przewodniku. Aby nauczyć się podstaw jezyka JavaScript, odwiedź znakomity
11+
[przewodnik][1] na stronach Mozilla Developer Network.
12+
13+
[1]: https://developer.mozilla.org/en/JavaScript/Guide

doc/pl/intro/license.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## Licencja
2+
3+
JavaScript Garden jest publikowany w ramach [licencji MIT] [1] i kod źródłowy znajduje
4+
się na serwerze [GitHub] [2]. Jeśli znajdziesz jakieś błędy lub literówek zgłoś proszę
5+
[problem] [3] lub rozwiązag go i zglosić pull request ze swojego repozytorium.
6+
Możesz nas także znaleźć w pokoju [JavaScript] [4] na chacie Stack Overflow.
7+
8+
[1]: https://github.com/BonsaiDen/JavaScript-Garden/blob/next/LICENSE
9+
[2]: https://github.com/BonsaiDen/JavaScript-Garden
10+
[3]: https://github.com/BonsaiDen/JavaScript-Garden/issues
11+
[4]: http://chat.stackoverflow.com/rooms/17/javascript

doc/pl/intro/translators.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
## Tłumaczenie
2+
3+
- [Łukasz Kufel][1] ([qfel13.pl][2])
4+
5+
[1]: https://github.com/qfel13
6+
[2]: http://qfel13.pl

doc/pl/object/forinloop.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
## The `for in` Loop
2+
3+
Podobnie jak operator `in`, pętla `for in` przeszukuje łańcuch prototypów
4+
podczas iteracji po właściwościach obiektu.
5+
6+
> **Uwaga:** pętla `for in` **nie** będzie iterować po właściwościach, które
7+
> mają ustawiony atrybut `enumerable` na `false` na przykład właściwość
8+
> `length` tablicy.
9+
10+
// Zatrucie Object.prototype
11+
Object.prototype.bar = 1;
12+
13+
var foo = {moo: 2};
14+
for(var i in foo) {
15+
console.log(i); // wyświetla obie właściwości: bar i moo
16+
}
17+
18+
Ponieważ nie jest możliwe, aby zmienić zachowanie pętli `for in` to niezbędne
19+
jest odfiltrowanie niechcianych właściwości wewnątrz ciała pętli, korzystając
20+
z metody [`hasOwnProperty`](#object.hasownproperty) z `Object.prototype`.
21+
22+
> **Uwaga:** Ponieważ pętla `for in` zawsze przeszukuje cały łańcuch prototypów
23+
> będzie się ona stawała coraz wolniejsza przy dodaniu każdej kolejnej warstwy
24+
> dziedziczenia do obiektu.
25+
26+
### Korzystanie z `hasOwnProperty` do odfiltrowania
27+
28+
// foo z przykładu powyżej
29+
for(var i in foo) {
30+
if (foo.hasOwnProperty(i)) {
31+
console.log(i);
32+
}
33+
}
34+
35+
To jest jedyna poprawna wersja, którą należy używać. Ze względu na użycie
36+
`hasOwnProperty` zostanie wypisane **jedynie** `moo`. Gdy opuścimy `hasOwnProperty`
37+
kod będzie podatny na błędy, gdy natywne prototypy np. `Object.prototype`
38+
zostanie rozszerzony.
39+
40+
[Prototype][1] jest jednym z szeroko rozpowszechniony framework, który dokonuje
41+
takiego rozszerzenia. Używanie tego frameworku oraz nie używanie w pętle `for in`
42+
metody `hasOwnProperty` gwarantuje błędy w wykonaniu.
43+
44+
### Wnioski
45+
46+
Zaleca się aby zawsze używać metody `hasOwnProperty`. Nigdy nie powinno się dokonywać
47+
żadnych założeń na temat środowiska, w którym kod będzie wykonywany i czy natywne
48+
prototypy zostały rozszerzone czy nie.
49+
50+
[1]: http://www.prototypejs.org/

doc/pl/object/general.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
## Wykorzystanie obiektów i ich właściwości
2+
3+
Wszystko w JavaScripcie zachowuje sie jak obiekt, z dwoma wyjątkami
4+
[`null`](#core.undefined) oraz [`undefined`](#core.undefined).
5+
6+
false.toString() // 'false'
7+
[1, 2, 3].toString(); // '1,2,3'
8+
9+
function Foo(){}
10+
Foo.bar = 1;
11+
Foo.bar; // 1
12+
13+
Popularnym błędem jest wykorzystanie literałów liczbowych jako obiektu.
14+
Spowodowanie jest to usterką w parserze JavaScript, który interpretuje kropkę
15+
po literale liczbowym jako rozdzielenie części całkowitej od części po przecinku
16+
liczby.
17+
18+
2.toString(); // wyrzuca błąd SyntaxError
19+
20+
Istnieje kilka rozwiązań, dzieki którym literał liczbowy będzie zachowywał się
21+
jak obiekt.
22+
23+
2..toString(); // druga kropka jest poprawnie rozpoznana
24+
2 .toString(); // zauważ, że pozostawiona jest spacja przed kropką
25+
(2).toString(); // 2 zostanie zewaluowane najpiewr
26+
27+
### Obiekty jako typy danych
28+
29+
Obiekty w języku JavaScript mogą być używana jako [*tablice asocjacyjne*][1].
30+
Ponieważ obiekty głównie składają się z mapowań pomiędzy nazwanymi właściwościami (kluczami)
31+
a wartościami dla tych atrybutów.
32+
33+
Używając literału obiektu - notacji `{}` - istnieje możliwość stworzenie obiektu prostego.
34+
Ten nowy obiekt bedzie [dziedziczył](#object.prototype) z `Object.prototype` oraz
35+
nie bedzie posiadał żadnych [własnych właściwości](#object.hasownproperty) zdefiniowanych w sobie.
36+
37+
var foo = {}; // nowy pusty obiekt
38+
39+
// nowy obiekt z właściwością test o wartości 12
40+
var bar = {test: 12};
41+
42+
### Dostęp do właściwości
43+
44+
Właściwości obiektu można uzyskać na dwa sposoby, poprzez notację z kropką
45+
lub notacje z nawiasami kwadratowymi.
46+
47+
var foo = {name: 'Kitten'}
48+
foo.name; // kitten
49+
foo['name']; // kitten
50+
51+
var get = 'name';
52+
foo[get]; // kitten
53+
54+
foo.1234; // wyrzuca błąd SyntaxError
55+
foo['1234']; // działa, zwraca undefined
56+
57+
Obie notacje są identyczne w swoim działaniu, z tą tylko różnicą że notacja z nawiasami
58+
kwadratowymi pozwala na dynamiczne dodawanie właściwości i nie prowadzi do wyrzycenia
59+
błędu podczas odczytu nieistniejącej właściwości.
60+
61+
### Usuwanie właściwości
62+
63+
Jedynym sposobem na faktycze usunięcie własności z obiektu jest użycie operatora
64+
`delete`. Ustawienie własności na `undefined` lub `null` usunie tylko *wartość*
65+
związaną z własnością, ale nie usunie to *klucza* (nazwy własności) z obiektu.
66+
67+
var obj = {
68+
bar: 1,
69+
foo: 2,
70+
baz: 3
71+
};
72+
obj.bar = undefined;
73+
obj.foo = null;
74+
delete obj.baz;
75+
76+
for(var i in obj) {
77+
if (obj.hasOwnProperty(i)) {
78+
console.log(i, '' + obj[i]);
79+
}
80+
}
81+
82+
Powyższy kod wypisuje dwie linie `bar undefined` i `foo null` - tylko własność `baz`
83+
została usunięta i dlatego nie została wypisana.
84+
85+
### Notacja właściwości
86+
87+
var test = {
88+
'case': 'I am a keyword so I must be notated as a string',
89+
delete: 'I am a keyword too so me' // wyrzuca błąd SyntaxError
90+
};
91+
92+
Nazwy właściwości obiektu mogą być zarówno zapisane jako tekst(bez cudzysłowów
93+
lub apostrofów) lub jako string (w cudzisłowach lub apostrofach).
94+
Ze względu na kolejne niedociągnięcie w parserze JavaScript
95+
powyższy kod wyrzuci błąd `SyntaxError` dla implementacji JavaScript ponizej ECMAScript 5.
96+
97+
Ten błąd wynika z faktu, że `delete` jest *słowem kluczowym*, dlatego musi zostać
98+
zapisany jako *string* (z cudzysłowami lub apostrofami), aby zapewnić, że zostanie
99+
to poprawnie zinterpretowane przez starsze silniki języka JavaScript.
100+
101+
[1]: http://pl.wikipedia.org/wiki/Tablica_asocjacyjna
102+

doc/pl/object/hasownproperty.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
## `hasOwnProperty`
2+
3+
W celu sprawdzenia czy dana właściwość została zdefiniowana *w tym* obiekcie a **nie**
4+
w [łańcuchu prototypów](#object.prototype) niezbędne jest skorzystanie z metody
5+
`hasOwnProperty`, która wszystkie obiekty dziedziczą z `Object.prototype`.
6+
7+
> **Uwaga:** **Nie** jest wystarczające, by sprawdzić, czy właściwość jest `undefined`.
8+
> Ponieważ właściwość może istnieć, ale jej wartość być ustawiona na `undefined`.
9+
10+
`hasOwnProperty` jest jedyna metodą w języku JavaScript która operuje na właściwościach
11+
i **nie** przegląda całego łańcucha prototypów.
12+
13+
// Zatrucie Object.prototype
14+
Object.prototype.bar = 1;
15+
var foo = {goo: undefined};
16+
17+
foo.bar; // 1
18+
'bar' in foo; // true
19+
20+
foo.hasOwnProperty('bar'); // false
21+
foo.hasOwnProperty('goo'); // true
22+
23+
Tylko `hasOwnProperty` da prawidłowy i oczekiwany rezultat. Jest to istotne podczas
24+
iteracji po właściwościach obiektu. **Nie** ma innego sposobu na ominięcie
25+
właściwości, która nie została zdefiniowana przez ten **konkretny** obiekt,
26+
ale gdzieś indziej w łańcuchu prototypów.
27+
28+
### `hasOwnProperty` jako właściwość
29+
30+
JavaScript **nie** chroni właściwości o nazwie `hasOwnProperty`, zatem istnieje
31+
możliwość, że obiekt może posiadać tak nazwaną właściwość. Konieczne jest użycie
32+
*zewnętrznego* `hasOwnProperty`, aby otrzymać poprawne rezultaty.
33+
34+
var foo = {
35+
hasOwnProperty: function() {
36+
return false;
37+
},
38+
bar: 'Here be dragons'
39+
};
40+
41+
foo.hasOwnProperty('bar'); // zawsze zwraca false
42+
43+
// Została użyta metoda innego obiektu i wywołana z konkekstem `this` ustawionym na foo
44+
({}).hasOwnProperty.call(foo, 'bar'); // true
45+
46+
### Wnioski
47+
48+
**Jedyną** metodą służącą do sprawdzenia zdefiniowania jakiejś właściwości w konkretnym
49+
obiekcie jest metoda `hasOwnProperty`. Zaleca się korzystać z `hasOwnProperty` jako część
50+
**każdej** [pętli `for in`](#object.forinloop), pozwoli to uniknąć błędów pochodzących z
51+
rozszerzonych natywnych [prototypów](#object.prototype).
52+

0 commit comments

Comments
 (0)