Obyektda "this" dan foydalanish
Bu erda makeUser funktsiyasi obyektni qaytaradi.
ref ga kirish natijasi qanday? Nima uchun?
function makeUser() {
return {
name: "John",
ref: this,
};
}
let user = makeUser();
alert(user.ref.name); // Natijasi nma?
Javob: xato
Try it:
function makeUser() {
return {
name: "John",
ref: this,
};
}
let user = makeUser();
alert(user.ref.name); // Error: Cannot read property 'name' of undefined
Buning sababi, this ni belgilaydigan qoidalar obyektlar soniga qarab bo’lmaydi.
makeUser() ichidagi this" qiymati undefined, chunki u usul sifatida emas, balki funktsiya sifatida chaqirilgan.
Obyektning o’zi this ga ta’sir qilmaydi. this ning qiymati butun funktsiya uchun bitta, kod bloklari va obyektlar unga ta’sir qilmaydi.
Shunday qilib, ref: bu aslida joriy funktsiyani this ni oladi.
Qarama-qarshi holat:
function makeUser() {
return {
name: "John",
ref() {
return this;
}
};
}
let user = makeUser();
alert( user.ref().name ); // John
Endi u ishlaydi, chunki user.ref() bu usul. Va this ning qiymati obyektga nuqtadan . oldin o’rnatiladi.