Junior
'this' ачкыч сөзү эмнеге тиешелүү?
sobes.tech AI
AIден жооп
this — бул JavaScriptте ачкыч сөз, ал учурдагы код ишке ашырылып жаткан обьеккага шилтеме кылат. Анын мааниси функцияны чакыруу жолу менен аныкталат.
thisти аныктоо негизги жолдору:
- Глобалдык контекст: Функциядан тышкары,
thisглобалдык обьеккага шилтеме кылат (windowбраузерде,globalNode.jsде). - Жалпысынан чакыруу: Не-строг режиминде (
strict mode)thisдагы глобалдык обьеккага шилтеме кылат (жеundefined, эгер функция обьекттин методу катары чакырылса, бирок ошол обьектnullжеundefinedболсо). Строг режимде,thisundefinedболот. - Обьекттин методу: Эгер функция обьекттин методу катары чакырылса (т.а. нокточу оператору
.аркылуу),thisошол обьекеге шилтеме кылат. - Конструктор:
newоператору колдонулганда,thisжаңы түзүлүп жаткан обьекеге шилтеме кылат. call(),apply(),bind()методдору: Бул методдор функцияны чакыргандаthisмаанисин так аныктоого мүмкүндүк берет.bind()жаңы функцияныthisменен байлайт, ал эмиcall()жанаapply()функцияны белгиленгенthisменен чакырат.- Стык функциялар: Стык функциялар өзүнүн
thisээ эмес.thisстык функциясында ал аныкталган чөйрөдөн лексикалык мурас алат.
Мисалдар:
// Глобалдык контекст
console.log(this === window); // чын (браузерде)
// Жалпысынан чакыруу
function myFunction() {
console.log(this);
}
myFunction(); // window (не-строг режиминде)
// Обьекттин методу
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Конструктор
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // жаңы объект
// call(), apply(), bind()
function greet(name) {
console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice
// Стык функция
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (эгер глобал контекстте аныкталган болсо)
this кандайча аныкталганын түшүнүү ар түрдүү контексттерде JavaScript кодун туура жазуу үчүн маанилүү.