Skip to content

Commit cfd68e1

Browse files
authored
Update article.md from reference-type: Change
1 parent 6c8b8c2 commit cfd68e1

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

1-js/99-js-misc/04-reference-type/article.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ user.hi(); // کار میکند!
2626
*/!*
2727
```
2828

29-
در خط آخر ما شرط سه تایی (تک خطی) را داریم که براساس true یا false بودن مقدار `user.name` مشخص میشود که آیا متد `user.hi` اجرا میشود یا `user.bye`. نتیجه درست است و `user.hi` برگردانده میشود ولی چون متد پرانتز ندارد درهنگام اجرا با مشکل روبرو خواهیم بود.
29+
در خط آخر ما شرط سه تایی (تک خطی) را داریم که براساس true یا false بودن مقدار `user.name` مشخص میشود که آیا متد `user.hi` اجرا میشود یا `user.bye`. نتیجه true است و `user.hi` برگردانده میشود, ولی چون متد پرانتز ندارد درهنگام اجرا با مشکل روبرو خواهیم بود.
3030

3131
همانطور که میبینید هنگام اجرا به ارور برخورد کردیم. چون مقدار `"this"` برابر با `undefined` است.
3232

@@ -51,7 +51,7 @@ user.hi();
5151

5252
خب پس چگونه اطلاعات مربوط به `this` از قسمت اول به دوم منتقل میشود؟
5353

54-
اگر ما این سوال هارا در خط های جداگانه ای قرار بدهیم, مطمئنا مقدار `this` از دست خواهد رفت:
54+
اگر ما این دستور را در خط های جداگانه ای قرار بدهیم, مطمئنا مقدار `this` از دست خواهد رفت:
5555

5656
```js run
5757
let user = {
@@ -68,9 +68,9 @@ hi(); // است undefiend برابر با this خطا! چون مقدار
6868

6969
در اینجا `hi = user.hi` تابع را در متغیر میریزد و چون خط آخر مستقل و از نظر جاوااسکریپت دستور جداگانه ای است به همین دلیل `this` وجود ندارد.
7070

71-
** برای اینکه دستور `()user.hi` درست کار کند, جاوااسکریپت برای آن یک راه حلی دارد. عملگر نقطه `'.'` نه فقط فانکشن بلکه مقدار خاصی از ریفرنس تایپ ها [Reference Type](https://tc39.github.io/ecma262/#sec-reference-specification-type) را برمیگرداند **
71+
** برای اینکه دستور `()user.hi` درست کار کند, جاوااسکریپت برای آن یک راه حلی دارد. عملگر نقطه `'.'` نه فقط فانکشن بلکه مقدار خاصی از ریفرنس تایپ ها [Reference Type](https://tc39.github.io/ecma262/#sec-reference-specification-type) را برمیگرداند **.
7272

73-
ریفرنس تایپ ها یا نوع ارجاعی "نوع خاصی از داده ها یا specification type" هستند. ما نمیتوانیم به صورت مستقیم از آن استفاده کنیم ولی به صورت داخلی داخل زبان تعبیه شده و استفاده میشود
73+
ریفرنس تایپ ها یا نوع ارجاعی "نوع خاصی از داده ها یا specification type" هستند. ما نمیتوانیم به صورت مستقیم از آن استفاده کنیم ولی به صورت داخلی داخل زبان تعبیه شده و استفاده میشود.
7474

7575
این نوع داده خاص شامل سه مقدار `(base, name, strict)` هست که:
7676
- `base` یک آبجکت است
@@ -85,7 +85,7 @@ hi(); // است undefiend برابر با this خطا! چون مقدار
8585
```
8686
وقتی که پرانتزی در Reference type ها صدا زده میشود, همه اطلاعات مربوط به اشیاء و متد فعلی را دریافت میکند و به درستی کلمه کلیدی `this` را مقداردهی میکند.
8787

88-
نوع Reference type یک نوع داده داخلی "واسط" با هدف انتقال اطلاعات مربوطه از عملگر نقطه `.` به پرانتز است
88+
نوع Reference type یک نوع داده داخلی "واسط" با هدف انتقال اطلاعات مربوطه از عملگر نقطه `.` به پرانتز است.
8989

9090
عملگری مانند عملگر انتساب (Assign) در `hi = user.hi` خاصیت Reference type را در متغیر جدید کنار میذارد و صرفا مقدار تابع `user.hi` برگردانده شده را میریزد. و سپس `this` مقدار خود را از دست میدهد.
9191

@@ -97,8 +97,8 @@ hi(); // است undefiend برابر با this خطا! چون مقدار
9797

9898
وقتی که یک ویژگی یا Peraperty مخصوصا توسط عملگر نقطه `.` در `()obj.method` خوانده میشود, نه تنها مقدار ویژگی بلکه مقادیر خاص مانند ویژگی ها یا توابع خاص را هم برمیگرداند.
9999

100-
بعد از اینکه متدی فراخوانی شد, عملگر پرانتز آبجکت را دریافت و `this` را مقداردهی میکند
100+
بعد از اینکه متدی فراخوانی شد, عملگر پرانتز آبجکت را دریافت و `this` را مقداردهی میکند.
101101

102-
برای مابقی عملگر ها Reference Type تبدیل به مقدار ویژگی میشود (تابع هم همینطور)
102+
برای مابقی عملگر ها Reference Type تبدیل به مقدار ویژگی میشود (تابع هم همینطور).
103103

104104
همه مکانیزم هایی که از چشم ما پنهان هستند, خیلی کم پیش میاید که از آن را مهم بدانیم و مطلع شویم که چطور کار میکنند. مانند زمانی که یک مقد به صورت پویا از طریق آبجکت و با استفاده از عبارت ها به دست میاید.

0 commit comments

Comments
 (0)