რა არის კონტექსტი JavaScript-ში?
sobes.tech AI
პასუხი AI-სგან
JavaScript-ში (this) არის მიმთითებელი ობიექტზე, რომლის ფარგლებში ამჟამინდელი ფუნქცია შესრულდება. მისი მნიშვნელობა განისაზღვრება იმით, როგორ არის ფუნქცია მოწოდებული, არა იმით, სადაც ის არის განსაზღვრული.
მთავარი გზები კონტექსტის განსაზღვრისთვის:
-
გლობალური კონტექსტი: ფუნქციების გარეთ, არაგრძე რეჟიმში
thisმიუთითებს გლობალურ ობიექტზე (windowბრაუზერში,globalNode.js-ში). მკაცრ რეჟიმშიthisარისundefined.// არაგრძე რეჟიმი (ბრაუზერში) 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-ში.