به کد زیر دقت کنید:
اما چرا وقتی از arrow functionها در کلاسهای جاوااسکریپت استفاده میکنیم، مقدار this به خود آبجکتهای کلاس اشاره میکند؟
به عنوان مثال به کد داخل تصویر (که یک کلاس کامپوننت ریاکت است) دقت کنید.
متد handleClick را به صورت arrow function تعریف کردهایم، اما مقدار this به خود آبجکت react element اشاره میکند! (دقیقا برعکس رفتاری که در کد بالا دیدیم)
چرا رفتار arrow functionها در آبجکتها و class fieldهای جاوااسکریپت متفاوت است؟
#interviewquestion #js #react #thiskeyword
@ProGraphs
let obj = {
whatIsThis: () => {
console.log("this is:", this);
}
};
در این کد، متد whatIsThis داخل آبجکت obj تعریف شده است. اما با توجه به اینکه arrow functionها در جاوااسکریپت this ندارند، مقدار this داخل این تابع به آبجکت گلوبال اشاره میکند (و نه به خود آبجکت obj).اما چرا وقتی از arrow functionها در کلاسهای جاوااسکریپت استفاده میکنیم، مقدار this به خود آبجکتهای کلاس اشاره میکند؟
به عنوان مثال به کد داخل تصویر (که یک کلاس کامپوننت ریاکت است) دقت کنید.
متد handleClick را به صورت arrow function تعریف کردهایم، اما مقدار this به خود آبجکت react element اشاره میکند! (دقیقا برعکس رفتاری که در کد بالا دیدیم)
چرا رفتار arrow functionها در آبجکتها و class fieldهای جاوااسکریپت متفاوت است؟
#interviewquestion #js #react #thiskeyword
@ProGraphs