darsga qaytish

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.