Sobes.tech
Middle

როგორ შეიძლება შეცვალოთ ობიექტის კონტექსტი JavaScript-ში?

sobes.tech AI

პასუხი AI-სგან

JavaScriptте this контекстин өзгөртүүнүн бир нече негизги жолдору бар:

  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(): Жаңы функцияны кайтарат, анын контексти белгиленген объектке бекитилет. Orигиналдуу функция дароо чакырылбайт.

    // `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.method()), this контексти объектке (obj) болот.

    // Мисал методу катары чакыруу
    const obj = {
        мааниси: "объекттин методу",
        көрсөт: function() {
            console.log(this.мааниси);
        }
    };
    obj.көрсөт(); // "объекттин методу" чыгарат
    
  6. Конструктор аркылуу контекстти берүү (new): new оператору колдонулганда, конструктордун ичинде this жаңы түзүлгөн объектке шилтеме кылат.

    // Конструктор мисалы
    function MyObject(мааниси) {
        this.мааниси = мааниси; // `this` жаңы объектке шилтеме кылат
    }
    const экземпляр = new MyObject("конструктор");
    console.log(экземпляр.мааниси); // "конструктор" чыгарат
    

Бул ыкмалар this сөзүнүн кайсы объектке шилтеме кылып жатканын башкарууга мүмкүндүк берет, ал JavaScriptте объекттер жана методдор менен иштөөдө маанилүү.