JavaScriptтеги контекст деген эмне?
sobes.tech AI
AIден жооп
JavaScriptтеги (this) — бул учурда иштеп жаткан функциянын чегинде шилтеме берген объект. Анын мааниси функция кандайча чакырылганына жараша аныкталат, ал аныкталган жерине эмес.
Контекстти аныктоо негизги жолдору:
-
Глобалдык контекст: Функциялардан тышкары, нострог режиминде
thisглобалдык объектке шилтеме кылат (windowбраузерде,globalNode.jsте). Катуу режимдеthisundefinedболот.// Нострог режим (браузерде) console.log(this === window); // чын // Катуу режим "use strict"; console.log(this === undefined); // чын -
Объекттин методу: Эгер функция объекттин методу катары чакырылса (
obj.method()), андаthisфункциянын ичинде ошол объектке шилтеме кылат (obj).const user = { name: "John", greet: function() { console.log("Hello, " + this.name); } }; user.greet(); // Чыгуу: Hello, John (this `user`ке шилтеме кылат) -
Функцияны чакыруу (
call,apply,bind):callжанаapplyфункцияны так көрсөтүлгөн контекст менен чакырат.bindжаңы функция түзөт, ал белгилүү контекст менен иштейт.function sayName(greeting) { console.log(greeting + ", " + this.name); } const person = { name: "Peter" }; sayName.call(person, "Hi"); // Чыгуу: Hi, Peter (this = person) sayName.apply(person, ["Hello"]); // Чыгуу: Hello, Peter (this = person) const boundSayName = sayName.bind(person, "Hey"); boundSayName(); // Чыгуу: Hey, Peter (this = person) -
Курулушчу (
new):newоператору менен функция чакырылса, жаңы бош объект түзүлөт жанаthisошол объектке шилтеме кылат.function Person(name) { this.name = name; } const john = new Person("John"); console.log(john.name); // Чыгуу: John (this `Person` ичинде `john`ке шилтеме кылат) -
Ажарыктуу функциялар: Ажарыктуу функциялар өзүнүн контексти жок.
thisсырттан (лексикалык) аймактан алынат, функция түзүлгөн жерден.const user = { name: "Alice", greet: function() { const innerGreet = () => { console.log("Hello, " + this.name); // this `greet`тен алынат (`user`ке шилтеме кылат) }; innerGreet(); } }; user.greet(); // Чыгуу: Hello, Alice
this кандайча аныкталганын түшүнүү JavaScriptте объекттер, методдор жана иш-чаралар үчүн маанилүү.