Skip to content

Commit 8ecce28

Browse files
committed
Translate "hamster-proto" task and solution
1 parent 1b92b2d commit 8ecce28

2 files changed

Lines changed: 31 additions & 31 deletions

File tree

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

Lines changed: 22 additions & 22 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+
بیایید با دقت نگاه کنیم که در فراخوانی `speedy.eat("سیب")` چه اتفاقی می‌افتد.
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. متد `speedy.eat` درون پروتوتایپ (`=hamster`) پیدا شده، سپس با `this=speedy` اجرا می‌شود (شیء قبل از نقطه).
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. سپس `this.stomach.push()` باید ویژگی `stomach` را پیدا کند و `push` را روی آن فراخوانی کند. به نظر می‌رسد این متد درون `this` (`=speedy`) به دنبال `stomach` می‌گردد، اما چیزی پیدا نشد.
66

7-
3. Then it follows the prototype chain and finds `stomach` in `hamster`.
7+
3. سپس زنجیره پروتوتایپ را دنبال می‌کند و `stomach` را درون `hamster` پیدا می‌کند.
88

9-
4. Then it calls `push` on it, adding the food into *the stomach of the prototype*.
9+
4. سپس `push` را روی آن فراخوانی می‌کند، که غذا را به *stomach درون پروتوتایپ* اضافه می‌کند.
1010

11-
So all hamsters share a single stomach!
11+
پس تمام همسترها شکم (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+
هم برای `lazy.stomach.push(...)` و `speedy.stomach.push()`، ویژگی `stomach` درون پروتوتایپ پیدا شده است (چون درون خود شیء وجود ندارد)، سپس داده جدید به داخل آن فرستاده می‌شود.
1414

15-
Please note that such thing doesn't happen in case of a simple assignment `this.stomach=`:
15+
لطفا توجه کنید که در صورت وجود یک مقداردهی ساده `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+
// this.stomach.push به جای this.stomach برابر قرار دادن با
2424
this.stomach = [food];
2525
*/!*
2626
}
@@ -34,17 +34,17 @@ let lazy = {
3434
__proto__: hamster
3535
};
3636

37-
// Speedy one found the food
38-
speedy.eat("apple");
39-
alert( speedy.stomach ); // apple
37+
// غذا را پیدا کرد Speedy همستر
38+
speedy.eat("سیب");
39+
alert( speedy.stomach ); // سیب
4040

41-
// Lazy one's stomach is empty
42-
alert( lazy.stomach ); // <nothing>
41+
// خالی است Lazy شکم همستر
42+
alert( lazy.stomach ); // <هیچی>
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+
حالا همه چیز به درستی کار می‌کند، چون `this.stomach=` در جست و جوی `stomach` نیست. مقدار به صورت مستقیم درون شیء `this` نوشته می‌شود.
4646

47-
Also we can totally avoid the problem by making sure that each hamster has their own stomach:
47+
همچنین می‌توانیم با اطمینان از اینکه هر همستر stomach خودش را دارا می‌باشد از این مشکل جلوگیری کنیم:
4848

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

72-
// Speedy one found the food
73-
speedy.eat("apple");
74-
alert( speedy.stomach ); // apple
72+
// غذا را پیدا کرد Speedy همستر
73+
speedy.eat("سیب");
74+
alert( speedy.stomach ); // سیب
7575

76-
// Lazy one's stomach is empty
77-
alert( lazy.stomach ); // <nothing>
76+
// خالی است Lazy شکم همستر
77+
alert( lazy.stomach ); // <هیچی>
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+
به عنوان یک راه‌حل عام، تمام ویژگی‌هایی که وضعیت یک شیء خاص را توصیف می‌کنند، مانند `stomach` بالا، باید درون همان شیء نوشته شوند. این کار از بروز مشکلات جلوگیری می‌کند.

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ importance: 5
22

33
---
44

5-
# Why are both hamsters full?
5+
# چرا هر دو دو همستر سیر هستند؟
6+
7+
ما دو همستر داریم: `speedy` و `lazy` که از شیء عمومی `hamster` ارث‌بری می‌کنند.
68

7-
We have two hamsters: `speedy` and `lazy` inheriting from the general `hamster` object.
8-
9-
When we feed one of them, the other one is also full. Why? How can we fix it?
9+
زمانی که ما به یکی از آن‌ها غذا می‌دهیم، دیگری هم سیر می‌شود. چرا؟ چگونه می‌توانیم این مشکل را رفع کنیم؟
1010

1111
```js run
1212
let hamster = {
@@ -25,11 +25,11 @@ let lazy = {
2525
__proto__: hamster
2626
};
2727

28-
// This one found the food
29-
speedy.eat("apple");
30-
alert( speedy.stomach ); // apple
28+
// این همستر غذا را پیدا کرد
29+
speedy.eat("سیب");
30+
alert( speedy.stomach ); // سیب
3131

32-
// This one also has it, why? fix please.
33-
alert( lazy.stomach ); // apple
32+
// این همستر هم غذا را دارد، چرا؟ لطفا این را درست کنید.
33+
alert( lazy.stomach ); // سیب
3434
```
3535

0 commit comments

Comments
 (0)