Маънои контекст дар JavaScript чист?
sobes.tech AI
Ҷавоб аз AI
Мазмуни (this) дар JavaScript — ин истинод ба объект, ки дар доираи он функсияи ҳозир иҷро мешавад. Қимати он муайян мешавад аз он чӣ тавр функсия даъват шудааст, на аз он ки дар куҷо он муайян шудааст.
Роҳҳои асосии муайян кардани мазмун:
-
Мазмуни глобалӣ: Дар берун аз функсияҳо, дар режими нострог
thisба объектии глобалӣ (windowдар браузер,globalдар Node.js) ишора мекунад. Дар режими қатъӣthisбаробар боundefined.// Режими нострог (дар браузер) console.log(this === window); // true // Режими қатъӣ "use strict"; console.log(this === undefined); // true -
Метод дар объект: Агар функсия ҳамчун методи объект даъват шавад (
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 муҳим аст.