Sobes.tech
Middle

გააზიარე ამ შესახებ სხვადასხვა კონტექსტში: ობიექტის მეთოდებში, სლაკის ფუნქციებში და ჩვეულებრივ ფუნქციებში.

sobes.tech AI

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

JavaScript-ში this მნიშვნელობა დამოკიდებულია ფუნქციის გამოძახების კონტექსტზე:

  • ობიექტის მეთოდებში this მიუთითებს იმ ობიექტზე, რომელსაც ეკუთვნის მეთოდი:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // Alice
  • სადაც ჩვეულებრივი ფუნქცია (მეთოდი არაა) this დამოკიდებულია რეჟიმსა და გამოძახების მეთოდზე:
    • მკაცრ რეჟიმში ('use strict') — this იქნება undefined.
    • არამკაცრ რეჟიმში — გლობალურ ობიექტზე (window ბრაუზერში).
function foo() {
  console.log(this);
}
foo(); // window ან strict რეჟიმში `undefined`
  • ფუნქციებში სროლა this ლექსიკალურად მემკვიდრეობით გადაეცემა გარედან კონტექსტს, ანუ იმ სფეროდან, სადაც ფუნქცია გამოაცხადა, არა სადაც გამოიძახა:
const obj = {
  name: 'Bob',
  arrowFunc: () => {
    console.log(this.name);
  },
  regularFunc() {
    const arrow = () => {
      console.log(this.name);
    };
    arrow();
  }
};
obj.arrowFunc(); // undefined ან გარედან კონტექსტის სახელი
obj.regularFunc(); // Bob

ამიტომ, სროლა ფუნქციები სასარგებლოა this კონტექსტის შენარჩუნებისთვის გარედან ფუნქციიდან, ხოლო ჩვეულებრივი ფუნქციები და მეთოდები საკუთარი მნიშვნელობით არიან, გამოძახების მეთოდზე დამოკიდებული.