자바스크립트 클래스

8712 단어 webjavascriptclass


Assalomu alaykum, bugungi maqolamiz JavaScript Class lari haqida bo'ladi.

JavaScriptda class ob'yekt yaratish uchun mo'ljallangan. Bunda class ob'yekt malumotlari va funksiyalarini o'z ichiga oladi. Boshqa dasturlash tillaridan farqli ravishda JavaScriptda class prototipli vorislikka asoslangan maxsus funksiya hisoblanadi.

ES6 및 올드인



ES6 및 oldin JS da class tushunchasi bo'lmagan.Biz bilgan class ni yaratish uchun 생성자 va 프로토타입 및 foydalanilgan.

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

Person.prototype.getName = function () {
    return this.name;
};

var ali = new Person("Ali Valiyev");
console.log(ali.getName());


나티자:

Ali Valiyev


Endi yuqoridagi kodning qanday ishlashini tushuntiraman.

Dastlab, name xususiyatiga egaPerson konstruktor funksiyasi yaratildi. prototype ga getName() funksiyasi biriktirildi, endi bu funksiyani Person 클래스 이슬라틸간 바르차 홀라트라르다 이슬라티시미즈 멈킨.

키인 esa new operatori yordamida Person 고전적인 나무. ali ob'yekti prototipli vorislik orqali Person VAObject klasslaridan namuna olganligi uchun endi ularning barcha xususiyatlaridan foydalana oladi.

console.log(john instanceof Person); // true
console.log(john instanceof Object); // true


Es6 다 클래스 닝 e'lon qilinishi



ES6 클래스 larni e'lon qilish uchun yangi sintaksis yaratildi. Yuqoridagi funksiya konstruktori yordamida yaratilgan class yangi sintaksisda quyidagicha yoziladi.

class Person {
    constructor(name) {
        this.name = name;
    }
    getName() {
        return this.name;
    }
}

Person 클라시다기 construtor() ichida olinadigan namunaning xususiyatlari e'lon qilinadi va new operatori orqali klassdan namuna olinganda JavaScript avtomatik ravishda constructor() 니 차키라디.

let ali = new Person("Ali Valiyev");

Person 클라시다기 getName() metod deb ataladi va bunday qo'llaniladi.

obyektNomi.metodNomi()


미솔 우천

let name = ali.getName();
console.log(name); // "Ali Valiyev"


비즈 유코리다 class ni maxsus funksiya dedik, buning isbotini ko'rish uchun Person 클라시닝 티피니 typeof 운영자 orqali tekshiramiz.

console.log(typeof Person); // function


Class va funksiya 콘스트럭토리



Class va funksiya konstruktori orasida o'xshashlik bo'lishiga qaramasdan, ularda farqlanadigan muhim jihatlar bor.

Birinchi, 클래스 e'lon qilinganda funksiyaga o'xshab hoisting ga uchramaydi.

Misol uchun, quyidagi kodni Person klassi e'lon qilinishidan oldin yozsak, natija sifatida ReferenceError 에가 볼라미즈.

let ali = new Person("Ali Valiyev");


자톨릭

Uncaught ReferenceError: Person is not defined


Ikkinchi, class ichidagi barcha kodlar avtomatik ravishda strict mode 다 이슐레이디.

Uchinchi, class metodlari non enumerable , ya'ni sanalmaydi(ular bilan for ... in va Object.keys() ni ishlata olmaymiz). Funksiya konstruktorida esa ob'yekt xususiyatlarini non enumerable qilish uchun Object.defineProperty() metodidan foydalanisimizga to'g'ri keladi.

Va oxirigisi, class konstruktorini new operatorisiz ishlatsak, xatolik beradi.

let ali = Person("Ali Valiyev");


자톨릭

Uncaught TypeError: Class constructor Person cannot be invoked without 'new'


줄로사


  • 클래스 yaratish uchun class 칼리트 소지니 이슬라타미즈.
  • class prototipli vorislikka asoslangan va kuchaytirilgan maxsus funksiya.

  • Foydali bo'lgan bo'lsa ulashing)

    좋은 웹페이지 즐겨찾기