You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/03-garbage-collection/article.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,14 +16,14 @@
16
16
17
17
- تابعی که در حال اجرا باشد، متغیرهای محلی و پارامترهای آن.
18
18
- تابعهای دیگر در زنجیرهی کنونیِ صدازدن های تو در تو، متغیرهای محلی و پارامترهای آن.
19
-
- متغیرهای global.
19
+
- متغیرهای گلوبال.
20
20
- (چند مورد دیگر هم هستند، همچنین موردهای داخلی)
21
21
22
22
این مقدارها *ریشهها* نامیده میشوند.
23
23
24
24
2. هر مقدار دیگری قابل دسترس فرض میشود اگر از یک ریشه توسط یک مرجع یا زنجیرهای از مراجع قابل دسترس باشد.
25
25
26
-
برای مثال، اگر یک شیء در متغیری global وجود داشته باشد، و آن شیء یک ویژگی داشته باشد که به شیءای دیگر رجوع میکند، *آن* شیء قابل دسترس فرض میشود. و آنهایی که این شیء به آنها رجوع میکند هم قابل دسترس هستند. مثالهای دارای جزئیات در ادامه آمده است.
26
+
برای مثال، اگر یک شیء در متغیری گلوبال وجود داشته باشد، و آن شیء یک ویژگی داشته باشد که به شیءای دیگر رجوع میکند، *آن* شیء قابل دسترس فرض میشود. و آنهایی که این شیء به آنها رجوع میکند هم قابل دسترس هستند. مثالهای دارای جزئیات در ادامه آمده است.
27
27
28
28
یک فرایند پشت پرده در موتور جاوااسکریپت وجود دارد به نام [زبالهروبی](https://fa.wikipedia.org/wiki/بازیافت_حافظه). این فرایند تمام شیءها را زیر نظر میگیرد و آنهایی که غیر قابل دسترس شدهاند را پاک میکند.
29
29
@@ -40,7 +40,7 @@ let user = {
40
40
41
41

42
42
43
-
اینجا، کمان یک مرجع شیء را نشان میدهد. متغیر global`"user"` به شیء `{name: "John"}` رجوع میکند (برای اختصار به آن John میگوییم). ویژگی `"name"` از John یک مقدار اصلی را ذخیره میکند، پس درون آن نقش بسته است.
43
+
اینجا، کمان یک مرجع شیء را نشان میدهد. متغیر گلوبال`"user"` به شیء `{name: "John"}` رجوع میکند (برای اختصار به آن John میگوییم). ویژگی `"name"` از John یک مقدار اصلی را ذخیره میکند، پس درون آن نقش بسته است.
44
44
45
45
اگر مقدار `user` بازنویسی شود، مرجع از دست میرود:
Copy file name to clipboardExpand all lines: 1-js/09-classes/02-class-inheritance/article.md
-29Lines changed: 0 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -106,11 +106,7 @@ class Rabbit extends Animal {
106
106
}
107
107
```
108
108
109
-
<<<<<<< HEAD
110
109
معمولا ما نمیخواهیم که یک متد والد را به طور کلی جایگزین کنیم بلکه میخواهیم متدی بر اساس آن بسازیم تا عملکرد آن را تغییر یا گسترش بدهیم. ما کاری را درون متد خود انجام میدهیم اما متد والد را قبل/بعد از آن یا در حین فرایند فراخوانی میکنیم.
111
-
=======
112
-
Usually, however, we don't want to totally replace a parent method, but rather to build on top of it to tweak or extend its functionality. We do something in our method, but call the parent method before/after it or in the process.
113
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
114
110
115
111
کلاسها کلمه کلیدی `"super"` را برای این موضوع فراهم میکنند.
این نکته فرض میکند شما درباره کلاسها مقداری تجربه دارید، شاید در زبانهای برنامهنویسی دیگر.
@@ -387,22 +367,13 @@ new Rabbit(); // rabbit
387
367
388
368
پس `new Rabbit()` تابع `super()` را فراخوانی میکند، به همین ترتیب سازنده والد را اجرا میکند و (بنا به دلیل موجود برای کلاسهای مشتق شده) فقط بعد از آن فیلدهای کلاس خودش مقداردهی اولیه میشوند. در زمان اجرای سازنده والد، فیلدهای کلاس `Rabbit` هنوز وجود ندارند، به همین دلیل فیلدهای `Animal` استفاده میشوند.
389
369
390
-
<<<<<<< HEAD
391
370
این تفاوت جزئی بین فیلدها و متدها مختص به جاوااسکریپت است.
392
-
=======
393
-
This subtle difference between fields and methods is specific to JavaScript.
394
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
395
371
396
372
خوشبختانه این موضوع فقط زمانی خودش را نشان میدهد که یک فیلد بازنویسی شده درون سازنده والد استفاده شده باشد. سپس ممکن است فهمیدن اینکه چه چیزی در حال رخ دادن است دشوار باشد، به همین دلیل اینجا آن را توضیح دادیم.
397
373
398
374
اگر این مشکلی ایجاد کند، میتوانید با استفاده از متدها یا getter/setterها به جای فیلدها آن را برطرف کنید.
399
375
400
-
<<<<<<< HEAD
401
-
402
376
## تابع Super: از درون، [[HomeObject]]
403
-
=======
404
-
## Super: internals, [[HomeObject]]
405
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
406
377
407
378
```warn header="اطلاعات اضافی"
408
379
اگر اولین بار است که این آموزش را میگذرانید - این بخش میتوانید از قلم بیاندازید.
پس در این صورت `Rabbit` دسترسی به متدهای ایستای `Object` را فراهم نمیکند.
81
69
82
-
<<<<<<< HEAD
83
-
راستی، `Function.prototype` دارای متدهای «عمومی» تابع است، مثل `call`، `bind` و غیره. آنها در هر دو مورد سرانجام در دسترس هستند چون سازنده درونساخت `Object`، `Object.__proto__ === Function.prototype` را دارد.
84
-
=======
85
-
By the way, `Function.prototype` also has "generic" function methods, like `call`, `bind` etc. They are ultimately available in both cases, because for the built-in `Object` constructor, `Object.__proto__ === Function.prototype`.
86
-
>>>>>>> 7000ede297bfd688f9a3767e8ca43abd9242f322
70
+
راستی، `Function.prototype` دارای متدهای «عمومی» تابع است، مثل `call`، `bind` و غیره. آنها سرانجام در هر دو مورد در دسترس هستند چون سازنده درونساخت `Object`، `Object.__proto__ === Function.prototype` را دارد.
0 commit comments