Sobes.tech
Middle

Чӣ гунаҳо метавон контексти объектро дар JavaScript тағир дод?

sobes.tech AI

Ҷавоб аз AI

Ҳадди ақал чанд роҳҳои асосӣ барои тағир додани контексти (this) объект дар JavaScript вуҷуд дорад:

  1. call(): Функсияро бо контексти муайян ва аргументҳо, ки ба таври ҷудогона дода шудаанд, иҷро мекунад.

    // Мисол бо call()
    const obj = { арзиш: 42 };
    function нишон диҳадАрзиш() {
        console.log(this.арзиш);
    }
    нишон диҳадАрзиш.call(obj); // 42-ро мебарорад
    
  2. apply(): Функсияро бо контексти муайян ва аргументҳо, ки ҳамчун массив ё псевдомассив дода шудаанд, иҷро мекунад.

    // Мисол бо apply()
    const obj = { арзиш: 100 };
    function ҷамъ(a, b) {
        console.log(this.арзиш + a + b);
    }
    ҷамъ.apply(obj, [5, 10]); // 115-ро мебарорад
    
  3. bind(): Натиҷаи навро, ки контексти он ба объект муайян мустаҳкам шудааст, бармегардонад. Функсияи аслӣ фавран иҷро намешавад.

    // Мисол бо bind()
    const obj = { арзиш: 200 };
    function салом() {
        console.log("Салом аз " + this.арзиш);
    }
    const саломБандшуда = салом.bind(obj);
    саломБандшуда(); // "Салом аз 200"-ро мебарорад
    
  4. Функсияҳои стрелка (=>): Контеки this-ро надорад. Онҳо контексти лексикӣ, ки дар он муайян шудаанд, мерос мебаранд.

    // Мисол бо функсияи стрелка
    const obj = {
      арзиш: "объект",
      нишонДоданиАрзиш: function() {
        const стрелкаФунксия = () => {
          console.log("Аз функсияи стрелка: " + this.арзиш); // this ба obj ишора мекунад
        }
        стрелкаФунксия();
      }
    };
    obj.намоишАрзиш(); // "Аз функсияи стрелка: объект"-ро мебарорад
    
  5. Пешбарии контекст тавассути истифодаи ҳамчун методи объект: Вақте ки функсия ҳамчун методи объект (obj.метод()) даъват мешавад, контексти this ба худи объект (obj) табдил меёбад.

    // Мисол бо истифодаи ҳамчун метод
    const obj = {
        арзиш: "методи объект",
        нишонДодан: function() {
            console.log(this.арзиш);
        }
    };
    obj.намоиш(); // "методи объект"-ро мебарорад
    
  6. Пешбарии контекст тавассути конструктор (new): Вақте ки оператори new барои сохтани экземпляри нав истифода мешавад, контексти this дар дохили конструктор ба экземпляр нав ишора мекунад.

    // Мисол бо конструктор
    function MyObject(арзиш) {
        this.арзиш = арзиш; // this ба экземпляри нав ишора мекунад
    }
    const экземпляр = new MyObject("конструктор");
    console.log(экземпляр.арзиш); // "конструктор"-ро мебарорад
    

Ин роҳҳо имкон медиҳанд, ки чӣ чизро this дар дохили функсия ишора мекунад, идора карда шавад, ки барои кор бо объектҳо ва методҳо дар JavaScript муҳим аст.