Sobes.tech
Junior

Πώς αλλάζετε το πλαίσιο μιας λειτουργίας σε JavaScript;

sobes.tech AI

Απάντηση από AI

JavaScript-də, bir funksiyanın icra konteksti (this) bir neçə üsulla dəyişdirilə bilər:

  1. call(): Bir funksiyanı müəyyən edilmiş this dəyəri və vergüllə ayrılmış arqumentlərlə icra edir.

    // function.call(thisArg, arg1, arg2, ...)
    function greet(name) {
      console.log(`Salam, ${name}! Mən ${this.type}`);
    }
    
    const obj = { type: 'obyekt' };
    
    greet.call(obj, 'Alyona'); // Salam, Alyona! Mən obyekt
    
  2. apply(): Bir funksiyanı müəyyən edilmiş this dəyəri və arqumentləri array və ya array-ə bənzər obyekt kimi ötürməklə icra edir.

    // function.apply(thisArg, [argsArray])
    function sum(a, b) {
      console.log(`${this.name}: ${a + b}`);
    }
    
    const context = { name: 'Hesablama maşını' };
    const numbers = [5, 10];
    
    sum.apply(context, numbers); // Hesablama maşını: 15
    
  3. bind(): Müəyyən edilmiş this dəyərinə "bağlanmış" yeni funksiya yaradır. Orijinal funksiya dərhal icra edilmir.

    // function.bind(thisArg, arg1, arg2, ...)
    const user = { name: 'Bob' };
    
    function sayHello() {
      console.log(`Mənim adım ${this.name}`);
    }
    
    const boundSayHello = sayHello.bind(user);
    
    boundSayHello(); // M