CodeGym /Kurslar /Frontend SELF AZ /call, bind və apply metodları

call, bind və apply metodları

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

8.1 call Metodu

JavaScript-də call, bindapply metodları funksiyaların icra kontekstinə nəzarət etməkdə əsas rol oynayır. Bu metodlar funksiyalar çağırılarkən this dəyərini təyin etməyə imkan verir. Xüsusilə obyektlər və funksional proqramlaşdırma ilə işləyərkən bu metodlar kod üzərində çevik idarəetmə üçün güclü vasitələr təqdim edir. Gəlin hər biri ilə daha ətraflı tanış olaq və istifadə nümunələrini araşdıraq.

call metodu funksiyanı verilmiş this dəyəri və vergüllə ayrılmış arqumentlər ilə çağırır. Bu, funksiyanın hansı kontekstdə icra olunacağını dəqiq təyin etməyə imkan verir.

Syntax:

    
      func.call(thisArg, arg1, arg2 ...);
    
  

Nümunə:

Bu nümunədə greet funksiyası person konteksti ilə çağırılır, bu isə ona person obyektinin name xüsusiyyətindən istifadə etməyə imkan verir.

JavaScript
    
      function greet(greeting, punctuation) {
        console.log(greeting + ', ' + this.name + punctuation);
      }

      const person = { name: 'John' };

      greet.call(person, 'Salam', '!'); // Output: Salam, John!
    
  

8.2 Apply metodu

apply metodu call ilə oxşardır, amma arqumentləri massiv şəklində ötürür. Bu, bizdə bir funksiyaya ötürmək istədiyimiz arqumentlərdən ibarət massiv olanda, rahatdır.

Sintaksis:

    
      func.apply(thisArg, [argsArray]);
    
  

Nümunə:

Bu nümunə əvvəlki ilə eynidir, amma arqumentlər massiv kimi ötürülür.

JavaScript
    
      function greet(greeting, punctuation) {
        console.log(greeting + ', ' + this.name + punctuation);
      }

      const person = { name: 'John' };

      greet.apply(person, ['Salam', '!']); // Çıxış: Salam, John!
    
  

8.3 Bind metodu

bind metodu, çağırıldıqda müəyyən edilmiş this dəyərini təyin edən yeni bir funksiya yaradır. bind içində ötürülən arqumentlər yeni funksiya üçün sabit olaraq qalır. Bu, sabit kontekstə malik funksiyalar yaratmağa imkan verir.

Sintaksis:

    
      const boundFunc = func.bind(thisArg, arg1, arg2 ...);
    
  

Nümunə:

Bu nümunədə boundGreet adlanan yeni bir funksiya yaradılır, və bu funksiya həmişə person obyektinin kontekstində icra olunacaq.

JavaScript
    
      function greet(greeting, punctuation) {
        console.log(greeting + ', ' + this.name + punctuation);
      }

      const person = { name: 'John' };

      const boundGreet = greet.bind(person, 'Salam');
      boundGreet('!'); // Çıxış: Salam, John!
    
  

8.4 Metodların istifadəsinin ətraflı izahı

1. call metodu ilə metodların miras alınması:

call metodu tez-tez bir obyektin metodlarını digər obyektə miras almaq üçün istifadə olunur. Bu, metodları və xassələri açıq-açıq miras almaq ehtiyacı olmadan borclanmağa imkan verir.

Bu nümunədə Product konstruktoru Food obyektinin kontekstində çağırılır, bu da nameprice xassələrini miras almağa imkan yaradır.

JavaScript
    
      function Product(name, price) {
        this.name = name;
        this.price = price;
      }

      function Food(name, price, category) {
        Product.call(this, name, price);
        this.category = category;
      }

      const cheese = new Food('Cheese', 5, 'Dairy');
      console.log(cheese); // Çıxış: Food { name: 'Cheese', price: 5, category: 'Dairy' }
    
  

2. apply metodu ilə arqumentlər massivinin ötürülməsi:

apply metodu, ayrı-ayrı parametrləri qəbul edən funksiya üçün arqumentlər massivini ötürmək istəyərkən çox rahatdır.

Bu halda, numbers massivindəki dəyərlər sum funksiyasına ayrı-ayrılıqda arqument kimi ötürülür.

JavaScript
    
      function sum(a, b, c) {
        return a + b + c;
      }

      const numbers = [1, 2, 3];
      console.log(sum.apply(null, numbers)); // Çıxış: 6
    
  

3. bind metodu ilə sabit kontekstli funksiyanın yaradılması:

bind metodu sabit konteksti olan funksiyalar yaratmağa imkan verir, bu xüsusilə hadisələr və geriyə çağırışlarla işləyərkən çox faydalıdır.

Burada getX funksiyası module obyekti ilə bind vasitəsilə birləşdirilir, bu da funksiyanı çağırdıqda doğru x dəyərini almağa imkan verir.

JavaScript
    
      const module = {
        x: 42,
        getX: function() {
          return this.x;
        }
      };

      const unboundGetX = module.getX;
      console.log(unboundGetX()); // Çıxış: undefined

      const boundGetX = unboundGetX.bind(module);
      console.log(boundGetX()); // Çıxış: 42
    
  

8.5 Real həyatdan nümunələr

Metod call-un array metodunu borc almaqda istifadəsinə nümunə:

Bu nümunədə forEach array metodu, arguments obyektinə call vasitəsilə tətbiq edilir.

JavaScript
    
      function printArguments() {
        Array.prototype.forEach.call(arguments, function(item) {
          console.log(item);
        });
      }

      printArguments(1, 2, 3); // Çıxış: 1, 2, 3
    
  

Metod apply-un array-lərin birləşdirilməsində istifadəsinə nümunə:

Burada push metodu, iki array-i birləşdirmək üçün apply vasitəsilə istifadə olunur.

JavaScript
    
      const array1 = [1, 2, 3];
      const array2 = [4, 5, 6];

      Array.prototype.push.apply(array1, array2);
      console.log(array1); // Çıxış: [1, 2, 3, 4, 5, 6]
    
  

Metod bind-un qismən funksiya yaratmaqda istifadəsinə nümunə:

double funksiyası, birinci arqumenti 2 olaraq fiksasiya etməklə bind vasitəsilə yaradılır.

JavaScript
    
      function multiply(a, b) {
        return a * b;
      }

      const double = multiply.bind(null, 2);
      console.log(double(5)); // Çıxış: 10
    
  
1
Опрос
CRUD və API ilə iş,  44 уровень,  3 лекция
недоступен
CRUD və API ilə iş
CRUD və API ilə iş
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION