Skip to content

Commit 3c6e3b2

Browse files
authored
last fixes
1 parent 682ad7a commit 3c6e3b2

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

1-js/04-object-basics/04-object-methods/article.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ let user = {
1111

1212
I tak jak w rzeczywistości, użytkownik może *działać*: wybrać coś z koszyka, zalogować się, wylogować itd.
1313

14-
Czynności JavaScript'cie są funkcjami we właściwościach obiektu.
14+
Czynności w JavaScript'cie są funkcjami we właściwościach obiektu.
1515

1616
## Przykłady metod
1717

@@ -34,13 +34,13 @@ user.sayHi(); // Cześć!
3434

3535
Właśnie stworzyliśmy funkcję za pomocą Wyrażenia Funkcji i przypisaliśmy ją do właściwości `user.sayHi` obiektu.
3636

37-
Następnie ją wywołaliśmy. Nasz użytkownik potrafi teraz mówić!
37+
Następnie ją wywołaliśmy i nasz użytkownik potrafi teraz mówić!
3838

3939
Funkcję, która jest właściwością obiektu nazywamy *metodą*.
4040

4141
Także mamy tutaj metodę `sayHi` obiektu `user`.
4242

43-
Oczywiście moglibyśmy również posłużyć się wcześniej zadeklarowaną funkcją jako metodą:
43+
Oczywiście, moglibyśmy również posłużyć się zadeklarowaną wcześniej funkcją jako metodą:
4444

4545
```js run
4646
let user = {
@@ -61,17 +61,17 @@ user.sayHi(); // Cześć!
6161
```
6262

6363
```smart header="Object-oriented programming"
64-
Kiedy piszemy kod wykorzystujący obiekty do reprezentowania różnych podmiotów, nazywamy to [programowaniem obiektowym](https://pl.wikipedia.org/wiki/Programowanie_obiektowe), w skrócie:
64+
Kiedy piszemy kod wykorzystujący obiekty do reprezentowania różnych istnień, nazywamy to [programowaniem obiektowym](https://pl.wikipedia.org/wiki/Programowanie_obiektowe), w skrócie:
6565
"OOP".
6666
67-
OOP to bardzo rozległy i interesujący temat. Jak wybrać właściwe podmioty? Jak stworzyć zależności między nimi? Jest to cała architektura i istnieje wiele świetnych książek traktujących ten temat, jak np. "Wzorce projektowe. Elementy oprogramowania" autorstwa E.Gamma, R.Helm, R.Johnson, J.Vissides, lub "Object-Oriented Analysis and Design with Applications" G.Booch, i wiele innych
67+
OOP to bardzo rozległy i interesujący temat. Jak wybrać właściwe podmioty? Jak stworzyć zależności między nimi? Jest to cała architektura i istnieje wiele świetnych książek traktujących ten temat, jak np. "Wzorce projektowe. Elementy oprogramowania" autorstwa E.Gamma, R.Helm, R.Johnson, J.Vissides, lub "Object-Oriented Analysis and Design with Applications" G.Booch, i wiele innych.
6868
```
69-
### Skrót dla metod
69+
### Skrót składniowy dla metod
7070

7171
Istnieje skrócona składnia dla metod w literałach obiektowych:
7272

7373
```js
74-
// te obiekty działają tak samo
74+
// poniższe obiekty działają tak samo
7575

7676
user = {
7777
sayHi: function() {
@@ -89,9 +89,9 @@ user = {
8989
};
9090
```
9191

92-
Tak jak wyżej, możemy pominąć `"function"` i po prostu użyć `sayHi()`.
92+
Jak widzimy, możemy pominąć `"function"` i po prostu użyć `sayHi()`.
9393

94-
Szczerze mowiąc, oba zapisy nie są całkowicie identyczne. Istnieją subtelne różnice między nimi, związane z dziedziczeniem (ten temat poruszymy później), ale na tem moment nie ma to znaczenia. W prawie każdym przypadku lepiej użyć skróconej wersji.
94+
Prawde mowiąc, oba zapisy nie są całkowicie identyczne. Istnieją subtelne różnice między nimi, związane z dziedziczeniem (ten temat poruszymy później), ale na tem moment nie ma to znaczenia. W prawie każdym przypadku lepiej użyć krótszej składni.
9595

9696
## "this" w metodach
9797

@@ -122,9 +122,9 @@ let user = {
122122
user.sayHi(); // John
123123
```
124124

125-
Podczas wykonania `user.sayHi()`, wartością `this` będzie `user`.
125+
Podczas wywołania `user.sayHi()`, wartością `this` będzie `user`.
126126

127-
Możliwe jest również uzyskanie dostępu do obiektu bez używania `this`, przez odwołąnie się do niego przez zmienną z zewnątrz:
127+
Możliwe jest również uzyskanie dostępu do obiektu bez używania `this`, przez odwołanie się do niego za pomocą zmiennej z zewnątrz:
128128

129129
```js run
130130
let user = {
@@ -168,7 +168,7 @@ Jeśli użylibyśmy `this.name` zamiast `user.name` wewnątrz `alert`, wtedy kod
168168

169169
## "this" nie jest powiązane
170170

171-
W JavaScript słowo kluczowe `this` zachowuje się inaczej niż w innych językach programowania. Może być użyte w każdej funkcji.
171+
W JavaScript słowo kluczowe `this` zachowuje się inaczej niż w innych językach programowania. Może ono być użyte w każdej funkcji.
172172

173173
Zapis taki jak w poniższym przykładzie nie powoduje błędu:
174174

@@ -220,9 +220,9 @@ sayHi(); // undefined
220220

221221
W tym przypadku `this` jest `undefined` w trybie ścisłym. Jeśli spróbujemy uzyskać dostęp do `this.name` pojawi się błąd.
222222

223-
Poza trybem ścisłym, w tym przypadku, wartością `this` będzie *obiekt globalny* (`window` w przeglądarce, dojdziemy do tego w późniejszym rozdziale [](info:global-object)). Jest to zamierzchłe zachowanie, które tryb `"use strict"` naprawia.
223+
Poza trybem ścisłym, w tym przypadku, wartością `this` będzie *obiekt globalny* (`window` w przeglądarce, dojdziemy do tego w późniejszym rozdziale [](info:global-object)). Jest to zamierzchłe zachowanie języka, które tryb `"use strict"` naprawia.
224224

225-
Zazwyczaj takie wywołanie jest błędem w kodzie. Jeśli w funkcji istnieje `this`, to powinna zostać wywołana jako metoda obiektu.
225+
Zazwyczaj takie wywołanie jest błędem w kodzie. Jeśli w funkcji istnieje `this`, to powinna ona zostać wywołana jako metoda obiektu.
226226
````
227227
228228
@@ -231,9 +231,9 @@ Jeśli programujesz w innym języku, zapewne przywykłeś do "powiązanego this"
231231
232232
W JavaScript `this` jest "wolne", jego wartość jest określana podczas wykonywania kodu i nie zależy od tego gdzie została zadeklarowana metoda, tylko jaki obiekt znajduje się "przed kropką".
233233
234-
Koncepcja określania `this` podczas wykonywania kodu ma wady i zalety. Z jednej strony, funkcja może być wykorzystywana przez różne obiekty. Z drugiej - im większa swoboda, tym większa podatność na pomyłki.
234+
Koncepcja ewaluacji `this` podczas wykonywania kodu ma wady i zalety. Z jednej strony, funkcja może być wykorzystywana przez różne obiekty. Z drugiej - im większa swoboda, tym większe ryzyko pomyłki.
235235
236-
Naszym zadaniem nie jest ocena czy taki wybór przy tworzeniu języka był dobry czy zły. Zastanawiamy się raczej jak z tym pracować, jak zyskać dzięki temu korzyści i jak uniknąć problemów.
236+
Naszym zadaniem nie jest ocena czy taki wybór przy tworzeniu języka był dobry czy zły. Zastanawiamy się raczej jak z takim mechanizmem pracować, jakie zyskać dzięki temu korzyści i jak uniknąć problemów.
237237
```
238238
239239
## Internals: Referencje
@@ -250,7 +250,7 @@ Zawiła metoda może doprowadzić do zgubienia `this`, na przykład:
250250
let user = {
251251
name: "John",
252252
hi() { alert(this.name); },
253-
bye() { alert("Bye"); }
253+
bye() { alert("Pa!"); }
254254
};
255255
256256
user.hi(); // John (zwykłe wywołanie działa bez problemu)
@@ -261,7 +261,7 @@ user.hi(); // John (zwykłe wywołanie działa bez problemu)
261261
*/!*
262262
```
263263
264-
W ostatniej linijce operator warunkowy wybiera pomiędzy `user.hi` i `user.bye`. W powyższym przykładzie wynikiem jest `ures.hi`.
264+
W ostatniej linijce operator warunkowy wybiera pomiędzy `user.hi` i `user.bye`. W powyższym przykładzie wynikiem jest `user.hi`.
265265
266266
Następnie metoda jest natychmiast wywoływana z nawiasami `()`. Ale nie działa prawidłowo!
267267
@@ -272,17 +272,17 @@ Ten kod działa (obiekt kropka metoda):
272272
user.hi();
273273
```
274274
275-
Ten nie działa (metoda określana):
275+
Ten nie działa (metoda ewaluowana):
276276
```js
277277
(user.name == "John" ? user.hi : user.bye)(); // Błąd!
278278
```
279279
280-
Dlaczego? Jeśli chcemy zrozumieć dlaczego tak się dzieje, przyjrzyjmy się dokładnie działa jak wywołanie `obj.method()`.
280+
Dlaczego? Jeśli chcemy zrozumieć dlaczego tak się dzieje, przyjrzyjmy się dokładnie jak działa wywołanie metody `obj.method()`.
281281
282282
Patrząc uważne, możemy zaobserwować dwie wykonujące się operacje w `obj.method()`:
283283
284-
1. Najpierw, kropka `'.'` pobiera wląściwość `obj.method`.
285-
2. Następnie nawiasy `()` ją wykonują.
284+
1. Najpierw, kropka `'.'` pobiera właściwość `obj.method`.
285+
2. Następnie nawiasy `()` ją wywołują.
286286
287287
Jak więc informacja o `this` migruje z pierwszej części do drugiej?
288288
@@ -303,7 +303,7 @@ hi(); // Błąd, ponieważ this jest undefined
303303
304304
`hi = user.hi` przypisuje metodę do zmiennej, a na samym końcu jest wywoływana jako osobna funkcja, więc `this` nie posiada już tutaj żadnej wartości.
305305
306-
**Żeby `user.hi()` działalo, JavaScript używa sztuczki -- kropka `'.'` nie zwraca funkcji, tylko wartość ze specjalną]ym [Typem Referencji](https://tc39.github.io/ecma262/#sec-reference-specification-type).**
306+
**Żeby `user.hi()` działało prawidłowo, JavaScript używa sztuczki -- kropka `'.'` nie zwraca funkcji, tylko wartość ze specjalnym [Typem Referencji](https://tc39.github.io/ecma262/#sec-reference-specification-type).**
307307
308308
Typ Referencji jest "typem specyfikacji". Nie możemy go bezpośrednio uzyć, ale jest on wbudowany i wykorzystywany przez język.
309309
@@ -320,11 +320,11 @@ Wynikiem dostępu do właściwości `user.hi` nie jest funkcja, tylko wartość
320320
(user, "hi", true)
321321
```
322322
323-
Jeśli wywołujemy nawiasy `()` na Typ Referencji, otrzymują one całą informację o obiekcie, jego metodzie i mogą ustawić dla this prawidłową wartość (w tym przypadku `=user`).
323+
Jeśli wywołujemy nawiasy `()` na Typie Referencji, otrzymują one całą informację o obiekcie, jego metodzie i mogą ustawić dla this prawidłową wartość (w tym przypadku `=user`).
324324
325325
Typ Referencji jest specjalnym "pośrednim" typem wewnętrznym, którego zadaniem jest przekazywanie informacji z kropki `.` do nawiasów `()`.
326326
327-
Każda inna operacja, jak przypisanie `hi = user.hi` odrzuca całkowicie Typ Referencji, bierze wartośc z `user.hi` (funkcji) i przekazuje ją dalej. Zatem każda następna operacja "gubi" `this`.
327+
Każda inna operacja, jak przypisanie `hi = user.hi` odrzuca całkowicie Typ Referencji, bierze wartość z `user.hi` (funkcji) i przekazuje ją dalej. Zatem każda następna operacja "gubi" `this`.
328328
329329
Podsumowując, wartość `this` jest przekazywane we właściwy sposób jeśli funkcja jest wywoływana za pomocą kropki `obj.method()` lub nawiasów kwadratowych `obj[`method`]()` (obie składnie zadziałają tutaj identycznie). W dalszej części kursu, nauczymy się różnych możliwości aby rozwiązać ten problem, takich jak [func.bind()](/bind#solution-2-bind).
330330
@@ -353,7 +353,7 @@ Jest to specjalna właściwość funkcji strzalkowych, są użyteczne gdy nie ch
353353
354354
- Funkcje które są przechowywane w obiekcie nazywamy "metodami".
355355
- Metody pozwalają obiektom "zachowywać się" w sposób `object.zróbCoś()`
356-
- Metody mają referencje do swojego obiektu, jest to wartość ich `this`
356+
- Metody mają referencje do swojego obiektu, jest to ich wartość `this`
357357
358358
Wartość `this` jest określana podczas wykonywania kodu.
359359
- Kiedy funkcja jest deklarowana, może ona użyć `this`, z tym że nie będzie ono miało wartości tak długo aż funkcja zostanie wywyłana.

0 commit comments

Comments
 (0)