بررسی متد apply در جاوااسکریپت

همونطور که می‌دونیم آبجکت‌ها می‌تونن متد داشته باشن. مثل متد name توی آبجکت زیر:

const person = {
  firstname: 'John',
  lastname: 'Doe',

  name() {
    alert(`${this.firstname} ${this.lastname}`);
  }
}

person.name(); // John Doe

خب در حالت عادی متد name متعلق به آبجکت person هست و this به این آبجکت اشاره می‌کنه. با استفاده از متد apply می‌تونیم یه کاری کنیم که this توی متد name به یک آبجکت دلخواه دیگه اشاره کنه. یعنی متد name رو بتونیم جاهای دیگه استفاده کنیم:

const person = {
  firstname: 'John',
  lastname: 'Doe',

  name() {
    alert(`${this.firstname} ${this.lastname}`);
  }
}

const person1 = {
  firstname: 'Jeff',
  lastname: 'Olson'
}

const person2 = {
  firstname: 'Maria',
  lastname: 'Debug'
}

person.name.apply(person1); //Jeff Olson
person.name.apply(person2); //Maria Debug

اگه متد name نیاز به آرگومان داشته باشه، می‌تونیم آرگومان‌ها رو بصورت آرایه پاس بدیم. ابتدا متد name رو بازنویسی کنیم که دو تا آرگومان بگیره:

const person = {
  name(age, country) {
    alert(`${this.firstname} ${this.lastname}, ${age}, ${country}`);
  }
}

و حالا بصورت زیر می‌تونیم ازش استفاده کنیم:

const person1 = {
  firstname: 'John',
  lastname: 'Doe'
}

person.name.apply(person1, [3, 'Japan']);

‌آرگومان دوم متد apply یک آرایه هست. هر کدوم از آیتم‌های این آرایه به عنوان آرگومان‌های متد name در نظر گرفته میشه.

منبع:

w3schools

dev.to




همچنین بخوانید:

اسکوپ (scope) در جاوااسکریپت چیست؟

هویستینگ (Hoisting) در جاوااسکریپت چیست؟

بررسی (let - var - const) در جاوااسکریپت

تفاوت دو مساوی (==) و سه مساوی (===) در جاوااسکریپت

بررسی متدهای تعامل با کاربر در جاوااسکریپت : alert , prompt, confirm

استفاده از عبارت 'use strict' در جاوااسکریپت

کار با توابع یا Functions در جاوااسکریپت

مقایسه توابع Declarations و Expressions در جاوااسکریپت

بررسی Callback Function در جاوااسکریپت

تفاوت عملگرهای Spread و Rest در جاوااسکریپت

پارامتر پیشفرض(Default Parameter) در جاوااسکریپت

بررسی arguments در توابع جاوااسکریپت

بررسی پروتوتایپ (Prototype) در جاوااسکریپت

بررسی Arrow Functions در جاوااسکریپت

بررسی Functions Calling Other Functions در جاوااسکریپت

بررسی آرایه (Array) در جاوااسکریپت

بررسی اشیاء یا آبجکت (objects) در جاوااسکریپت

بررسی حلقه‌ها (Loops) در جاوااسکریپت

بررسی انتخابگرها (Selectors) در جاوااسکریپت

بررسی innerHTML در جاوااسکریپت

بررسی DOM در جاوااسکریپت، آموزش متد querySelector

بررسی نحوه عملکرد جاوا اسکریپت در پشت صحنه

بررسی مفهوم Execution Context در جاوااسکریپت - پشت‌ پرده جاوااسکریپت (بخش اول)

بررسی مفهوم Execution Context در جاوااسکریپت - پشت‌ پرده جاوااسکریپت (بخش دوم)

تعریف API (Application Programming Interface) به زبان ساده!

دِستراکچرینگ (Destructuring) در جاوااسکریپت یعنی چه؟

بررسی عملگر (...) Spread در جاوااسکریپت

بررسی پارامترهای Rest در جاوااسکریپت

اتصال کوتاه (Short Circuiting) با عملگرهای منطقی AND (&&) و OR (||) در جاوااسکریپت

اتصال کوتاه (Short Circuiting) با عملگر منطقی Nullish coalescing (??) در جاوااسکریپت

حلقه for ... of در جاوااسکریپت

بررسی Enhanced Object literals در جاوااسکریپ

بررسی Optional Chaining (_.) در جاوااسکریپت

بررسی کاربرد Map و Set در جاوااسکریپت (مقدماتی)

بررسی کاربرد Map و Set در جاوااسکریپت (پیشرفته)

پارامتر پیشفرض (default parameter) در جاوااسکریپت

منظور از first class function در جاوااسکریپت