Wartość wskaźnika this zależy od kontekstu wywołania funkcji
operator new albo funkcja Object.create()
this wskazuje na obiekt zwrócony przez konstruktor.
const obj = {
counter: 0,
plus: function() {
this.counter++
},
minus: function() {
this.counter--
},
}
const A = Object.create(obj)
const B = Object.create(obj)
A.plus()
A.plus()
B.minus()
console.log(A === B) // false
console.log(A === obj) // false
console.log(A.counter, B.counter) // 2 -1
this wskazuje na obiekt zawierający wywoływaną funkcję
const obj = {
init: function() {
this.counter = 0
return this
},
plus: function() {
this.counter++
},
minus: function() {
this.counter--
},
}
const A = obj.init()
const B = obj.init()
A.plus()
A.plus()
B.minus()
console.log(A === B) // true
console.log(A === obj) // true
console.log(A.counter, B.counter) // 1 1
można wskazać konkretny obiekt za pomocą .call() albo .bind()
arrow function