آموزش استخراج متدها در جاوا اسکریپت

Ratings
(0)

اگر ما یک متد را (از داخل یک شیء یا آبجکت) در بیرون استخراج(extract) کنیم، اتصالش با آن آبجکت از دست می رود. و این تابع به تنهایی یک متد نیست. و کلمه ی کلیدی this (در حالت strict ) مقدار undefined خواهد داشت. بعنوان مثال، به آبجکت jane در مقاله ی قبلی توجه کنید:

'use strict';
var jane = {
  name: 'Jane',
  describe: function () {
   return 'Person named '+this.name;
  }
};

ما می خواهیم متد describe را از آبجکت jane استخراج(extract) کنیم و آن را در متغیر func قرار دهیم و سپس آن را مورد فراخوانی قرار دهیم. اما این کار درست از آب در نمی آید:

> var func = jane.describe;
> func()
TypeError: Cannot read property 'name' of undefined

راه حل این است که از متد bind() استفاده کنیم که در تمامی تابع ها وجود دارد. این متد یک تابع جدید ایجاد می کند که به وسیله ی آن، کلمه ی کلیدی this همواره مقدار داده شده را خواهد داشت.

> var func2 = jane.describe.bind(jane);
> func2()
'Person named Jane'

 

 

  • بازدید: 372

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال