Skip to content

Commit 2d5ce73

Browse files
authored
Merge pull request #189 from yoga1234/master
Translate
2 parents fc365e5 + 321d02c commit 2d5ce73

File tree

8 files changed

+47
-45
lines changed

8 files changed

+47
-45
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11

2-
1. `true`, taken from `rabbit`.
3-
2. `null`, taken from `animal`.
4-
3. `undefined`, there's no such property any more.
2+
1. `true`, diambil dari `rabbit`.
3+
2. `null`, diambil dari `animal`.
4+
3. `undefined`, propertinya sudah tidak ada.

1-js/08-prototypes/01-prototype-inheritance/1-property-after-delete/task.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
importance: 5
1+
Nilai: 5
22

33
---
44

5-
# Working with prototype
5+
# Bekerja dengan prototype
66

7-
Here's the code that creates a pair of objects, then modifies them.
7+
Ini adalah kode yang membuat sepasang objek, lalu dimodifikasi.
88

9-
Which values are shown in the process?
9+
Nilai manakan yang akan muncul?
1010

1111
```js
1212
let animal = {
@@ -28,4 +28,4 @@ delete animal.jumps;
2828
alert( rabbit.jumps ); // ? (3)
2929
```
3030

31-
There should be 3 answers.
31+
Seharusnya ada 3 jawaban.

1-js/08-prototypes/01-prototype-inheritance/2-search-algorithm/solution.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@
2727
alert( table.money ); // undefined
2828
```
2929

30-
2. In modern engines, performance-wise, there's no difference whether we take a property from an object or its prototype. They remember where the property was found and reuse it in the next request.
30+
2. Dalam mesin modern, kinerja yang bagus, tidak ada perbedaan apakan kita mengambil properti dari sebuah objek atau dari *prototype*nya. Mesinnya akan ingat darimana mengambil propertinya dan menggunakannya kembali pada request selanjutnya.
3131

32-
For instance, for `pockets.glasses` they remember where they found `glasses` (in `head`), and next time will search right there. They are also smart enough to update internal caches if something changes, so that optimization is safe.
32+
Contoh, untuk `pockets.glasses` mereka ingat dimana `glasses` ditemukan (dalam `head`), dan pencarian selanjutnya akan dicari ditempat yang sama. Mesinnya juga cukup pintar untuk memperbaharui *cache internal* jika sesuatu berubah, jadi optimasinya akan aman.

1-js/08-prototypes/01-prototype-inheritance/2-search-algorithm/task.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
importance: 5
1+
Nilai: 5
22

33
---
44

5-
# Searching algorithm
5+
# Algoritma pencarian
66

7-
The task has two parts.
7+
Tugasnya memiliki dua bagian.
88

9-
Given the following objects:
9+
Diberikan objek-objek berikut:
1010

1111
```js
1212
let head = {
@@ -27,5 +27,5 @@ let pockets = {
2727
};
2828
```
2929

30-
1. Use `__proto__` to assign prototypes in a way that any property lookup will follow the path: `pockets` -> `bed` -> `table` -> `head`. For instance, `pockets.pen` should be `3` (found in `table`), and `bed.glasses` should be `1` (found in `head`).
31-
2. Answer the question: is it faster to get `glasses` as `pockets.glasses` or `head.glasses`? Benchmark if needed.
30+
1. Gunakan `__proto__` untuk memasukan *prototype* dengan cara yang mana membuat property yang mencari akan mengikuti *path*: `pockets` -> `bed` -> `table` -> `head`. Contoh, `pockets.pen` haruslah `3` (ditemukan di `table`), dan `bed.glasses` haruslah `1` (ditemukan didalam `head`).
31+
2. Jawab pertanyaan: mana yang lebih cepat didapatkan `glasses` sebagai `pockets.glasses` atau `head.glasses`? Jika diperlukan gunakanlah *benchmark*.
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
**The answer: `rabbit`.**
1+
**Jawabannya: `rabbit`.**
22

3-
That's because `this` is an object before the dot, so `rabbit.eat()` modifies `rabbit`.
3+
Karena `this` adalah sebuah objek sebelum titik, jadi `rabbit.eat()` memodifikasi `rabbit`.
44

5-
Property lookup and execution are two different things.
5+
Pencarian properti dan eksekusi adalah dua hal yang berbeda.
66

77
The method `rabbit.eat` is first found in the prototype, then executed with `this=rabbit`.
8+
Metode `rabbit.eat` adalah yang pertama ditemukan dalam *prototype*, lalu dieksekusi dengan `this=rabbit`.

1-js/08-prototypes/01-prototype-inheritance/3-proto-and-this/task.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
importance: 5
1+
Nilai: 5
22

33
---
44

5-
# Where does it write?
5+
# Dimanakah akan tertulis?
66

7-
We have `rabbit` inheriting from `animal`.
7+
Kita memiliki `rabbit` mewarisi dari `animal`.
88

9-
If we call `rabbit.eat()`, which object receives the `full` property: `animal` or `rabbit`?
9+
Jika kita memanggil `rabbit.eat()`, yang mana objeknya menerima properti `full`: `animal` atau `rabbit`?
1010

1111
```js
1212
let animal = {

1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/solution.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1-
Let's look carefully at what's going on in the call `speedy.eat("apple")`.
1+
Kita perhatikan baik-baik pada apa yang terjadi dalam pemanggilannya `speedy.eat("apple")`.
22

3-
1. The method `speedy.eat` is found in the prototype (`=hamster`), then executed with `this=speedy` (the object before the dot).
3+
1. Metode `speedy.eat` ditemukan dalam prototype (`hamster`), lalu dieksekusi dengan `this=speedy` (objek sebelum titik).
44

5-
2. Then `this.stomach.push()` needs to find `stomach` property and call `push` on it. It looks for `stomach` in `this` (`=speedy`), but nothing found.
5+
2. Lalu `this.stomach.push()` perlu menemukan properti `stomach` dan panggil `push` didalamnya. Itu akan mencati `stomach` didalam `this` (`=speedy`), tapi tidak menemukan apapun.
66

7-
3. Then it follows the prototype chain and finds `stomach` in `hamster`.
7+
3. Lalu akan mengikuti rantai *prototype* dan menemukan `stomach` didalam `hamster`.
88

9-
4. Then it calls `push` on it, adding the food into *the stomach of the prototype*.
9+
4. lalu akan memanggil `push` didalamnya, menambahkan makanan kedalam *stomach dari prototype*.
1010

11-
So all hamsters share a single stomach!
11+
Jadi semua hamster membagi satu *stomach*!
1212

13-
Both for `lazy.stomach.push(...)` and `speedy.stomach.push()`, the property `stomach` is found in the prototype (as it's not in the object itself), then the new data is pushed into it.
13+
Diantara `lazy.stomach.push(...)` dan `speedy.stomach.push()`. properti `stomach` ditemukan didalam *prototype* (sebagaimana tidak didalam objeknya sendiri) , lalu datanya akan dimasukan.
1414

15-
Please note that such thing doesn't happen in case of a simple assignment `this.stomach=`:
15+
Perhatikan bahwa hal tersebut tidak akan terjadi pada *assignment* sederhana `this.stomach=`:
1616

1717
```js run
1818
let hamster = {
1919
stomach: [],
2020

2121
eat(food) {
2222
*!*
23-
// assign to this.stomach instead of this.stomach.push
23+
// masukan this.stomach daripada this.stomach.push
2424
this.stomach = [food];
2525
*/!*
2626
}
@@ -34,17 +34,17 @@ let lazy = {
3434
__proto__: hamster
3535
};
3636

37-
// Speedy one found the food
37+
// Speedy one menemukan makanannya
3838
speedy.eat("apple");
3939
alert( speedy.stomach ); // apple
4040

41-
// Lazy one's stomach is empty
41+
// Perut Lazy one kosong
4242
alert( lazy.stomach ); // <nothing>
4343
```
4444

45-
Now all works fine, because `this.stomach=` does not perform a lookup of `stomach`. The value is written directly into `this` object.
45+
Sekarang semuanya berjalan dengan baik, karena `this.stomach=` tidak melakukan pencarian `stomach`. Nilainya ditulis langsung kedalam objek `this`.
4646

47-
Also we can totally avoid the problem by making sure that each hamster has their own stomach:
47+
Kita juga bisa benar-benar menghindar dari masalah dengan memastikan bahwa setiak hamster memiliki perut mereka masing-masing:
4848

4949
```js run
5050
let hamster = {
@@ -69,12 +69,12 @@ let lazy = {
6969
*/!*
7070
};
7171

72-
// Speedy one found the food
72+
// Speedy one menemukan makanan
7373
speedy.eat("apple");
7474
alert( speedy.stomach ); // apple
7575

76-
// Lazy one's stomach is empty
76+
// Perut Lazy one kosong
7777
alert( lazy.stomach ); // <nothing>
7878
```
7979

80-
As a common solution, all properties that describe the state of a particular object, like `stomach` above, should be written into that object. That prevents such problems.
80+
Sebagai solusi umum, seluruh properti yang dideskripsikan dari objek tertentu, seperti `stomach` diatas, seharusnya ditulis kedalam objeknya. Untuk menghindari masalah seperti itu.

1-js/08-prototypes/01-prototype-inheritance/4-hamster-proto/task.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
importance: 5
1+
Nilai: 5
22

33
---
44

5-
# Why are both hamsters full?
5+
# Kenapa kedua hamster kenyang?
66

7-
We have two hamsters: `speedy` and `lazy` inheriting from the general `hamster` object.
7+
Kita memiliki dua hamster: `speedy` dan `lazy` yang mewarisi objek `hamster`.
8+
9+
Ketika kita memberi makan salah satunya, yang satunya lagi akan ikut kenyang. Kenapa? Bagaimana cara memperbaikinya?
810

9-
When we feed one of them, the other one is also full. Why? How can we fix it?
1011

1112
```js run
1213
let hamster = {
@@ -25,11 +26,11 @@ let lazy = {
2526
__proto__: hamster
2627
};
2728

28-
// This one found the food
29+
// Yang satu ini menemukan makanan
2930
speedy.eat("apple");
3031
alert( speedy.stomach ); // apple
3132

32-
// This one also has it, why? fix please.
33+
// Yang ini juga memilikinya, kenapa? perbaikilah.
3334
alert( lazy.stomach ); // apple
3435
```
3536

0 commit comments

Comments
 (0)