"This" ning qiymatini tushuntiring
Quyidagi kodda biz ketma-ket 4 marta user.go()
usulini chaqirmoqchimiz.
Ammo (1)
va (2)
chaqiruvlari (3)
va (4)
dan farq qiladi. Nima uchun?
let obj, method;
obj = {
go: function () {
alert(this);
},
};
obj.go(); // (1) [object Object]
obj.go(); // (2) [object Object]
(method = obj.go)(); // (3) undefined
(obj.go || obj.stop)(); // (4) undefined
Quyida tushuntirishlar.
-
Bu odatiy obyekt usulini chaqiruvi.
-
Xuddi shu, qavslar bu yerda ishlash tartibini o’zgartirmaydi, nuqta baribir birinchi o’rinda turadi.
-
Bu erda biz
(ifoda).method()
yanada murakkab chaqiruvga egamiz. Chaqiruv xuddi ikkita satrga bo’linganidek ishlaydi:f = obj.go; // ifodani hisoblang f(); // paydo bo'lgan narsani chaqiring
Bu yerda
f()
funktsiya sifatidathis
siz bajariladi. -
Shunga o’xshash narsa
(3)
, nuqta chap tomonida.
bizda iboralar mavjud.
(3)
va (4)
xatti-harakatlarini tushuntirish uchun xususiyatga kiruvchilar (nuqta yoki kvadrat qavslar) havola turining qiymatini qaytarishini esga olishimiz kerak.
Unda usul chaqiruvidan tashqari har qanday operatsiya (masalan, =
yoki ||
topshirig’i kabi) uni oddiy qiymatga aylantiradi, bu this
o’rnatishga imkon beradigan ma’lumotni o’z ichiga olmaydi.