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("Բարև from " + this.արժեք);
    }
    const ամրացվածԲարև = բարև.bind(obj);
    ամրացվածԲարև(); // Տպում է "Բարև from 200"
    
  4. Աղեղային ֆունկցիաներ (=>): Չեն ունեն սեփական this կոնտեքստ։ Դրանք ժառանգում են կոնտեքստը լեքսիկոնային շրջապատից, որտեղ դրանք սահմանվել են:

    // Աղեղային ֆունկցիայի օրինակ
    const obj = {
      արժեք: "օբյեկտ",
      ցուցադրելԱրժեքը: function() {
        const աղեղայինՖունկցիա = () => {
          console.log("Աղեղային ֆունկցիայից: " + this.արժեք); // this հղում է դեպի obj
        }
        աղեղայինՖունկցիա();
      }
    };
    obj.ցուցադրելԱրժեքը(); // Տպում է "Աղեղային ֆունկցիայից: օբյեկտ"
    
  5. Կոնկրետ փոխանցում որպես մեթոդի``obj.method()```-ի միջոցով: Երբ ֆունկցիան կանչվում է որպես օբյեկտի մեթոդ (obj.method()), this կոնտեքստը դառնում է ինքն օբյեկտը (obj):

    // Մոդել որպես մեթոդ
    const obj = {
        արժեք: "օբյեկտի մեթոդ",
        ցույցտվե՚րԱրժեք() {
            console.log(this.արժեք);
        }
    };
    obj.ցույցտվե՚րԱրժեք(); // Տպում է "օբյեկտի մեթոդ"
    
  6. Կոնկրետ փոխանցում կոնստրուկտորով (new): Երբ օգտագործվում է new օպերատորը նոր օբյեկտի օրինակ ստեղծելու համար, this կոնտեքստը ներսում կոնստրուկտորում հղվում է ստեղծվող օրինակին:

    // Կոնստրուկտորի օրինակ
    function MyObject(արժեք) {
        this.արժեք = արժեք; // this հղում է նոր օրինակին
    }
    const օրինակ = new MyObject("կոնստրուկտոր");
    console.log(օրինակ.արժեք); // Տպում է "կոնստրուկտոր"
    

Այս եղանակները թույլ են տալիս կառավարել, թե ինչին է հղում this բանալի բառը ֆունկցիայի ներսում, ինչը կարևոր է օբյեկտների և մեթոդների ճիշտ աշխատանքի համար JavaScript-ում։