Obyekt konstruktorlari

ULASHISH

Obyekt konstruktor funksiyalari

Ba’zan bir xil turdagi ko‘plab obyektlarni yaratishga to‘g‘ri keladi.

Obyekt turini yaratish uchun biz obyekt konstruktor funksiyasidan foydalanamiz.

Konstruktor funksiyalarini bosh harf bilan nomlash yaxshi amaliyot hisoblanadi.

Person obyekt tipi

function Person(first, last, age, eye) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eye;
}
O‘zingiz sinab ko‘ring »

Konstruktor funksiyasida this hech qanday qiymatga ega emas.

Yangi obyekt yaratilganda this qiymati shu yangi obyekt bo‘ladi.

Ko‘proq o‘qish:

JavaScript obyektlarida this.

Endi biz ko‘plab yangi Person obyektlarini yaratish uchun new Person() dan foydalanishimiz mumkin:

Misol

const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
const mySister = new Person("Anna", "Rally", 18, "green");

const mySelf = new Person("Johnny", "Rally", 22, "green");
O‘zingiz sinab ko‘ring »

Xususiyatlarning standart qiymatlari

Xususiyatga berilgan qiymat konstruktor tomonidan yaratilgan barcha obyektlar uchun standart qiymat bo‘ladi:

Misol

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.nationality = "English";
}
O‘zingiz sinab ko‘ring »

Obyektga xususiyat qo‘shish

Yaratilgan obyektga xususiyat qo‘shish oson:

Misol

myFather.nationality = "English";
O‘zingiz sinab ko‘ring »

Yangi xususiyat myFather ga qo‘shiladi. Boshqa Person obyektlariga qo‘shilmaydi.


Konstruktorga xususiyat qo‘shish

Obyekt konstruktoriga yangi xususiyat qo‘sha olmaysiz:

Misol

Person.nationality = "English";
O‘zingiz sinab ko‘ring »

Yangi xususiyat qo‘shish uchun uni konstruktor funksiyasi prototipiga qo‘shishingiz kerak:

Misol

Person.prototype.nationality = "English";
O‘zingiz sinab ko‘ring »


Konstruktor funksiya metodlari

Konstruktor funksiyasida metodlar ham bo‘lishi mumkin:

Misol

function Person(first, last, age, eyecolor) {
  this.firstName = first;
  this.lastName = last;
  this.age = age;
  this.eyeColor = eyecolor;
  this.fullName = function() {
    return this.firstName + " " + this.lastName;
  };
}
O‘zingiz sinab ko‘ring »

Obyektga metod qo‘shish

Yaratilgan obyektga metod qo‘shish oson:

Misol

myMother.changeName = function (name) {
  this.lastName = name;
}
O‘zingiz sinab ko‘ring »
Yangi metod myMother ga qo‘shiladi. Boshqa Person obyektlariga qo‘shilmaydi.

Konstruktorga metod qo‘shish

Obyekt konstruktor funksiyasiga yangi metod qo‘sha olmaysiz.

Ushbu kod TypeError hosil qiladi:

Misol

Person.changeName = function (name) {
  this.lastName = name;
}

myMother.changeName("Doe");

 TypeError: myMother.changeName is not a function

Konstruktorga yangi metod qo‘shish konstruktor funksiyasining prototipi orqali amalga oshirilishi kerak:

Misol

Person.prototype.changeName = function (name) {
  this.lastName = name;
}

myMother.changeName("Doe");
O‘zingiz sinab ko‘ring »

changeName() funksiyasi name qiymatini shaxsning lastName xususiyatiga o‘zlashtiradi, bunda this o‘rniga myMother qo‘yiladi.


JavaScript’ning o‘rnatilgan konstruktorlari

JavaScript’da barcha ichki (native) obyektlar uchun o‘rnatilgan konstruktorlar mavjud:

new Object()   // A new Object object
new Array()    // A new Array object
new Map()      // A new Map object
new Set()      // A new Set object
new Date()     // A new Date object
new RegExp()   // A new RegExp object
new Function() // A new Function object
O‘zingiz sinab ko‘ring »

Math() obyekti ro‘yxatda yo‘q. Math - global obyekt. new kalit so‘zini Math bilan ishlatib bo‘lmaydi.


Bilasizmi?

new Object() o‘rniga obyekt literallari {}’dan foydalaning.

new Array() o‘rniga massiv literallari []’dan foydalaning.

new RegExp() o‘rniga shablon literallari /()/’dan foydalaning.

new Function() o‘rniga funksiya ifodalari () {}’dan foydalaning.

Misol

"";           // primitive string
0;            // primitive number
false;        // primitive boolean

{};           // object object
[];           // array object
/()/          // regexp object
function(){}; // function
O‘zingiz sinab ko‘ring »




W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!