در این مطالب یاد خواهیم گرفت،
- کلمه کلیدی "این" در جاوا اسکریپت چیست؟
- روش "bind" چیست؟
- چگونه "این" با توابع Arrow کار می کند
- استفاده از مفاهیم بالا در مثال React
- لطفا قسمت 1 , Part 2 , Part 3 , Part 4 , Part 5 را مرور کنید
بیایید درباره کلمه کلیدی "این" بیشتر بیاموزیم زیرا درک صحیح آن ما را از دردسرهای زیادی در آینده نجات می دهد.
درک کلمه کلیدی "این" در جاوا اسکریپت
"this" در داخل یک تابع نشان دهنده "تماس گیرنده" است. اگر یک تابع بخشی از یک شی باشد، میتوانیم آن تابع را با استفاده از علامت نقطه ( . ) فراخوانی کنیم (به عنوان مثال myObj.Show()). در این مورد، "this" در تابع "Show" نشان دهنده (یا نام مستعار) شی "myObj" است. ما می توانیم با استفاده از روش های 'call' یا 'apply' از تماس گیرنده دیگری برای یک تابع استفاده کنیم. انعطاف پذیری برای داشتن تماس گیرنده متفاوت با یک عملکرد یک ویژگی قدرتمند است، اما گاهی اوقات ما این را نمی خواهیم.
- <script >
- class Person{
- a = 10;
- constructor(){
- }
- show(){
- console.log('value of a is:' + this.a);
- }
- }
- var obj = new Person();
- //'this' refers to 'obj' and 'obj' has a = 10
- obj.show(); //output will be: '10'
- //func now points to same show function
- var func = obj.show;
- func(); //Error as 'this' is undefined
- </script>
گاهی اوقات ما می خواهیم از یک شی "از پیش تعریف شده" برای "این" صرف نظر از تماس گیرنده استفاده کنیم. راه های متعددی برای دستیابی به این امر وجود دارد.
اتصال یک شی به عنوان "this" با یک تابع با استفاده از روش "bind".
متد 'bind' یک شی را می گیرد و یک کپی از تابع ایجاد می کند اما یک اتصال ایجاد می کند (به شرطی که شی به عنوان "this" درون تابع در نظر گرفته شود). در مثال زیر، یک کپی از تابع 'show' با استفاده از روش 'bind' ایجاد کردیم. 'obj' به متد bind ارسال می شود، بنابراین 'this' در تابع 'show' شی 'obj' خواهد بود. مهم نیست که تماس گیرنده کی باشد.