this
- это ключевое слово, которое ссылается на объект, в контексте которого был вызван код. Значение this
зависит от того, как был вызван код, и может изменяться в разных контекстах.
Значение this
может быть определено в следующих контекстах:
- В глобальной области видимости,
this
ссылается на объектWindow
в браузере или на объектglobal
в Node.js. - В методах объекта,
this
ссылается на сам объект.
const obj = {
name: "John",
greet: function () {
console.log(`Hello, my name is ${this.name}`)
},
}
obj.greet() // "Hello, my name is John"
- В функциях, вызванных с помощью методов объекта,
this
ссылается на сам объект.
const obj = {
name: "John",
greet: function () {
console.log(`Hello, my name is ${this.name}`)
},
}
const myGreet = obj.greet
myGreet() // "Hello, my name is undefined"
- В конструкторах объектов,
this
ссылается на новый экземпляр объекта, который создается при вызове конструктора.
function Person(name) {
this.name = name
this.greet = function () {
console.log(`Hello, my name is ${this.name}`)
}
}
const john = new Person("John")
john.greet() // "Hello, my name is John"
- В функциях, вызванных с помощью методов
call()
,apply()
илиbind()
,this
ссылается на объект, переданный как первый аргумент.
const obj = {
name: "John",
greet: function () {
console.log(`Hello, my name is ${this.name}`)
},
}
const otherObj = {
name: "Jane",
}
obj.greet.call(otherObj) // "Hello, my name is Jane"
Значение this
может быть сложным и зависит от контекста, поэтому важно понимать, как оно работает в разных ситуациях.