<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Davron Normo`minov</title>
    <description>The latest articles on DEV Community by Davron Normo`minov (@davronny).</description>
    <link>https://dev.to/davronny</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F852391%2F032d9825-2f25-4cea-a7c3-50918d50f838.png</url>
      <title>DEV Community: Davron Normo`minov</title>
      <link>https://dev.to/davronny</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/davronny"/>
    <language>en</language>
    <item>
      <title>React 19, nimalar o'zgardi?</title>
      <dc:creator>Davron Normo`minov</dc:creator>
      <pubDate>Sat, 07 Dec 2024 20:01:56 +0000</pubDate>
      <link>https://dev.to/davronny/react-19-nimalar-ozgardi-3j2a</link>
      <guid>https://dev.to/davronny/react-19-nimalar-ozgardi-3j2a</guid>
      <description>&lt;p&gt;Dasturchi sifatida ishlatadigan texnologiyangizdagi yangiliklardan habardor bo'lishingiz kerak. Yaqinda React ning 19-versiyasi stabil holatga o'tdi. Bu postda 19-versiyada chiqqan o'zgarishlar bilan tanishasiz.&lt;/p&gt;

&lt;p&gt;Post ikki qismdan iborat, birinchisi 19-versiyada chiqqan yangiliklar va Reactda qaysi qismlar yaxshilangani haqida. Keling yangiliklardan oldin nimalar yaxshilangani bilan tanishamiz.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;ref&lt;/code&gt; ni props sifatida berish
&lt;/h3&gt;

&lt;p&gt;ref larni props qilib berish uchun &lt;code&gt;forwardRef&lt;/code&gt; dan foydalanishga majbur bo'lar edik va bu ortiqchi ish keltirib chiqarardi. Unda yozilgan kod esa bu holarda bo'lar edi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;forwardRef&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MyInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;forwardRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;MyInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Endi esa refni to'g'ridan to'g'ri props qilib berish mumkin&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;MyInput&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;placeholder&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;MyInput&lt;/span&gt; &lt;span class="na"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ref uchun cleanup function
&lt;/h3&gt;

&lt;p&gt;Agar ref biror componentda ishlatilsa, bu component UI dan olib tashlanganda (unmount) ref ni tozalash kerak bo'ladi. Bu xotirani samarali boshqarishga, kutilmagan holatlarni oldini olish uchun muhim. Avvalgi versiyalarda bu useEffectning return qismida yozilar edi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Example&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Reset ref if needed&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="cm"&gt;/* dependencies */&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;19-versiyadagi o'zgarishdan so'ng yuqoridagi kod quyidagicha yoziladi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;
  &lt;span class="na"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ref created&lt;/span&gt;

    &lt;span class="c1"&gt;// NEW: return a cleanup function to reset&lt;/span&gt;
    &lt;span class="c1"&gt;// the ref when element is removed from DOM.&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// ref cleanup&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;useDeferredValue&lt;/code&gt; ga boshlang'ich qiymat berish imkoniyati
&lt;/h3&gt;

&lt;p&gt;initialValue nima uchun berilishi yaxshi bilasiz, shu sababli keyingi  bo'limga mumkin )&lt;/p&gt;

&lt;h3&gt;
  
  
  Metadatalarni qo'llab quvvatlash
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;meta&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt; kabi meta elementlarni kerakli sahifaga berish uchun useEffect ichida yoki &lt;code&gt;react-helmet&lt;/code&gt; kabi kutubxonalardan foydalanishga to'g'ri kelardi. &lt;/p&gt;

&lt;p&gt;19-versiyada bu teglarni to'g'ridan to'g'ri ishlatish imkoniyati qo'shildi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;BlogPost&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;meta&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"author"&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Josh"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"author"&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://twitter.com/joshcstory/"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;meta&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"keywords"&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;keywords&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        Eee equals em-see-squared...
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;React component ni render qilganda meta teglarni avtomatik &lt;/p&gt; elementi ichiga o'tkazadi. 
&lt;h3&gt;
  
  
  Stillarni qo'llab quvvatlash
&lt;/h3&gt;

&lt;p&gt;Bu versiyada stillarni optimizatsiya qilishga ham e'tibor qaratishgan, bunda stillarni kerakli vaqtda yuklab olish imkoniyati va &lt;code&gt;precedence&lt;/code&gt; atributi qo'shilgan. Bu atribut orqali stillarning DOM ga qo'shilish tartibini boshqarish mumkin. Stillar o'ziga bog'liq component mount bo'lishidan oldin yuklanadi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Asinxron scriptlarni qo'llab quvvatlash
&lt;/h3&gt;

&lt;p&gt;Huddi stillarga o'xshab asinxron scriptlarni kerakli vaqtda yuklab olish mumkin. Stillar va asinxron scriptlarni yuklaydigan component bir nechta joyda ishlatilganda ularni qayta yuklab olishi haqida o'ylamasangiz ham bo'ladi, chunki birinchi marta yuklanganda keshga saqlangan bo'ladi )&lt;/p&gt;

&lt;h3&gt;
  
  
  Resurslarni oldindan yuklash
&lt;/h3&gt;

&lt;p&gt;Qaysidir resursni imkon qadar tez yuklab olish sayt performance'iga yaxshi ta'sir qiladi. Bu imkoniyatdan foydalanish uchun React 19 da yangi API lar e'lon qilindi. Bular quyidagilar &lt;/p&gt;

&lt;p&gt;&lt;code&gt;preinit&lt;/code&gt; - resursni tezda yuklab olib ishlatish uchun (scriptlar yoki modullar);&lt;br&gt;
&lt;code&gt;preload&lt;/code&gt; - resursni avvaldan yuklab olish uchun, bu holatda yuklangan resursni tezda ishlatish shart emas (fontlar, stillar)&lt;br&gt;
&lt;code&gt;preconnect&lt;/code&gt; - resurs yuklamoqchi bo'lgan serverga connection ochadi, bu esa resurs yuklanish vaqtini tezlashtiradi.&lt;br&gt;
&lt;code&gt;prefetchDNS&lt;/code&gt; - &lt;code&gt;preconnect&lt;/code&gt; ga o'xshab ishlaydi, farqi connection hosil qilmasdan resurs uchun so'rov yuborilishidan oldin uni yuklab oladi va keshda saqlab turadi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom elementlarni qo'llab quvvatlash
&lt;/h3&gt;

&lt;p&gt;Oldingi versiylarda custom elementlar ishlatilganda React propslarni tanimagan, yangi versiyadan boshlab ularni muammosiz ishlatish mumkin. Custom elementga misol -&amp;gt; &lt;code&gt;&amp;lt;my-element /&amp;gt;&lt;/code&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note - ba'zi joylarda kod orqali misollar berilmadi, misollarni &lt;a href="https://react.dev/blog/2024/12/05/react-19#improvements-in-react-19" rel="noopener noreferrer"&gt;bu yerda&lt;/a&gt; ko'rishingiz mumkin&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>react</category>
      <category>frontend</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Javascript bilimlaringizni oshiring: Siz bilmagan 5 ta operatorlar bilan tanishamiz.</title>
      <dc:creator>Davron Normo`minov</dc:creator>
      <pubDate>Thu, 06 Apr 2023 07:33:31 +0000</pubDate>
      <link>https://dev.to/davronny/javascript-bilimlaringizni-oshiring-siz-bilmagan-5-ta-operatorlar-bilan-tanishamiz-8kf</link>
      <guid>https://dev.to/davronny/javascript-bilimlaringizni-oshiring-siz-bilmagan-5-ta-operatorlar-bilan-tanishamiz-8kf</guid>
      <description>&lt;p&gt;Dasturchi sifatida ishlatadigan texnologiyalarimizdagi yangi xususiyatlarni muntazan o'rganib boramiz. Endi boshlagan dasturchilar uchun bu dasturlash tilini o'rganishning bir qismi bo'lishiga qaramasdan, middle hamda senior darajadagi dasturchilar bo'sh vaqtlarini tilning yangi imkoniyatlarini o'rganish bilan o'tkazadilar.  Ba'zan bu xususiyatlarni tushunish qiyin yoki ular uchun yetarlicha vaqt ajrata olmaymiz. Bu maqolada Javascript uchun nisbatan yangi bo'lgan optional chaining, nullish coalescing operator,  conditional operator, nullish assignment va nullish equality operatorlari haqida ma'lumotga ega bo'lasiz.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional chaining (?.)
&lt;/h2&gt;

&lt;p&gt;Optional chaining operatori ob'ektning xususiyati qiymatini olish yoki uning metodini chaqirish uchun ishlatiladi. Agar bu xususiyat yoki chaqirilgan metodning qiymati &lt;code&gt;undefined&lt;/code&gt; yoki &lt;code&gt;null&lt;/code&gt; bo'lsa, optional chaining ishlatilgan ifoda xatolik qaytarish o'rniga &lt;code&gt;undefined&lt;/code&gt; ga teng bo'ladi. Misol uchun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sayohatchi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;ism&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alijon&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;yosh&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;manzil&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;nom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Toshkent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sayohatchi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;joylashuv&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;nom&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Natija: undefined&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sayohatchi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;metodNomi&lt;/span&gt;&lt;span class="p"&gt;?.());&lt;/span&gt;
&lt;span class="c1"&gt;// Natija: undefined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>JavaScriptda 'getter' va 'setter'</title>
      <dc:creator>Davron Normo`minov</dc:creator>
      <pubDate>Thu, 28 Apr 2022 06:55:18 +0000</pubDate>
      <link>https://dev.to/davronny/javascriptda-getter-va-setter-842</link>
      <guid>https://dev.to/davronny/javascriptda-getter-va-setter-842</guid>
      <description>&lt;p&gt;Assalomu alaykum, bugun sizlar bilan JavaScriptda &lt;em&gt;getter&lt;/em&gt; va &lt;u&gt;setter&lt;/u&gt; metodlari tanishamiz.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewr22xi32r2vv8zdzryo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewr22xi32r2vv8zdzryo.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Ob'ektlarning ikki xil xususiyati bo'ladi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birinchisi&lt;/strong&gt;, ma'lumot xususiyati (data property). Ma'lumot xususiyati bilan ko'pchiligimiz tanishmiz va barchamiz u bilan ishlaganmiz.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ikkinchisi&lt;/strong&gt;, kiruvchi xususiyat (accessor property). Bu tashqaridan qaraganda oddiy &lt;em&gt;property&lt;/em&gt; ga o`xshaydigan, _property_ning qiymatini olish hamda yangi qiymat berish uchun mo'ljallangan maxsus funksiya.&lt;/p&gt;

&lt;p&gt;getter va setter larni 3 xil usulda hosil qilish mumkin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;odatiy metod yaratish usuli orqali&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get&lt;/code&gt; va &lt;code&gt;set&lt;/code&gt; kalit so`zlari orqali&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Object.defineProperty()&lt;/code&gt; metodi orqali&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  getter metodlar
&lt;/h2&gt;

&lt;p&gt;Ob'ekt xususiyatining qiymatini olishning eng oson yo'llaridan biri ularnig har biriga getter metodlarini yozib chiqishdir. Keling getter metodlar qanday hosil qilinishini ko'rib chiqamiz. Dastlab, ishga kirish uchun topshirgan nomzod ob'ektini yaratib olamiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nomzod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;ism&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ALi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;tajriba&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agar nomzod xususiyatlari qiymati olmoqchi bo'lsak, quyidagicha kod yozamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ism&lt;/span&gt; &lt;span class="c1"&gt;// "Ali"&lt;/span&gt;
&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tajriba&lt;/span&gt; &lt;span class="c1"&gt;// 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Endi, ob'ektga getter metodlarini qo'shamiz. Bu metodlar ob'ektning &lt;strong&gt;ism&lt;/strong&gt; va &lt;strong&gt;tajriba&lt;/strong&gt; xususiyatlari qiymatlarini qaytaradi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nomzod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;

    &lt;span class="na"&gt;getIsm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ism&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;

    &lt;span class="na"&gt;getTajriba&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tajriba&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;getter va setter metodlari orqali qiymatlar quyidagicha olamiz:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getIsm&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// "Ali"&lt;/span&gt;
&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getTajriba&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Oddiy ko'rinadi, to'g'rimi? Endi sizda savol tug'ilishi mumkin, getter va setter bizga nimaga kerak, ularsiz ham ob'ekt xususiyatini oddiygina qilib chaqirishimiz mumkinku? Bu savolingizga setter metodi bilan tanishganimizda javob olasiz.👇👇👇&lt;/p&gt;

&lt;h2&gt;
  
  
  setter metodlar
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;setter&lt;/code&gt; metodlarining vazifasi ob'ekt xususiyatiga yangi qiymat o'xlashtirish hisoblanadi. Misol uchun yuqoridagi ob'ektga &lt;code&gt;setter&lt;/code&gt; metodlarini yozamiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nomzod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;

    &lt;span class="na"&gt;setIsm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newIsm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ism&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newIsm&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; 

    &lt;span class="na"&gt;setTajriba&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTajriba&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tajriba&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newTajriba&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;setter metodlari quyidagicha chaqiramiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setIsm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Vali&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setTajriba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getIsm&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// "Vali"&lt;/span&gt;
&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getTajriba&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// 5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Endi qiziq joyiga keldik. &lt;code&gt;getter&lt;/code&gt; va &lt;code&gt;setter&lt;/code&gt; nimaga kerak? Tasavvur qiling siz yangi qiymat bermoqchi bo'lgan ob'ekt xususiyati bir nechta validatsiyalarda o'tishi kerak, mislo uchun, parol xususiyatini oladigan bo'lsak, parol 8 ta belgidan kam bo'lmasligi, raqam, belgi, katta va kichik harflardan iborat bo'lishi kerak. Yuqoridagi shartlarni if operatori bilan tekshiramiz va har safar yangi qiymat berganimizda o'sha shartni qayta yozamiz. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;setter&lt;/code&gt; metodlari bilan foydasi shuki, bizga kerakli shartlarni &lt;code&gt;setter&lt;/code&gt; metodi ichida yozamiz va har safar yangi qiymat o'zlashtirganimizda qiymat avtomatik ravishda biz yozgan shartlar bo'yicha tekshiriladi. &lt;/p&gt;

&lt;p&gt;Hozir buni nomzodning tajriba xususiyati orqali sinab ko'ramiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nomzod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;...&lt;/span&gt;

    &lt;span class="na"&gt;setIsm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newIsm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ism&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newIsm&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="na"&gt;setTajriba&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTajriba&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTajriba&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tajriba&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newTajriba&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2 yildan kam tajribali nomzodlar ko'rib chiqilmaydi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setTajriba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// Xatolik beradi va tajriba uchun yangi qiymatni olmaydi.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Demak, &lt;code&gt;getter&lt;/code&gt; va &lt;code&gt;setter&lt;/code&gt; metodlari bizga qiymat olguncha yoki yangi qiymat berguncha qo'shimcha logika qo'shish va xususiyatlarni xavfsiz qilish uchun kerak ekan. &lt;/p&gt;

&lt;h2&gt;
  
  
  get va set kalit so'zlari orqali
&lt;/h2&gt;

&lt;p&gt;Biz yuqorida ko'rilgan metodlar &lt;strong&gt;get&lt;/strong&gt; va &lt;strong&gt;set&lt;/strong&gt; kalit so'zlari orqali quyidagi yoziladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nomzod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;_ism&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ALi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;_tajriba&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nf"&gt;ism&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_ism&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;

    &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nf"&gt;tajriba&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_tajriba&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;

    &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="nf"&gt;ism&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newIsm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_ism&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newIsm&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="nf"&gt;tajriba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTajriba&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTajriba&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_tajriba&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newTajriba&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2 yildan kam tajribali nomzodlar ko'rib chiqilmaydi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;get&lt;/code&gt; va &lt;code&gt;set&lt;/code&gt; kalit so'zlari orqali ob'ekt uchun metod emas, balki &lt;em&gt;accessor xususiyat&lt;/em&gt; hosil qilinadi, ya'ni ularni metodni chaqirgandek emas xususiyatni chaqirgandek chaqiramiz. Yuqoridagi kodda o'zgaruvchi nomalari bir xil bo'lib qolmasligi uchun ob'ektning ism va tajriba xususiyatlarini mos ravishda _ism va _tajriba ga almashtirdik. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;get&lt;/code&gt; va &lt;code&gt;set&lt;/code&gt; bilan yaratilgan getter va setterning nomlari bir xil bo'lishi hech qanaqa muammo bo'lmaydi, agar xususiyatni chaqirgandek chaqirsak getter ishlaydi, yangi qiymat o'lashtirmoqchi bo'sak setter ishlari.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tajriba&lt;/span&gt; &lt;span class="c1"&gt;// getter ishlaydi, tajribaning qiymatini qaytaradi&lt;/span&gt;
&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tajriba&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="c1"&gt;// setter ishlaydi, tajriba uchun yangi qiymat oladi.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Object.defineProperty() orqali
&lt;/h2&gt;

&lt;p&gt;Object.defineProperty() orqali biriktirilgan accessor property lar data propertylardan farq qiladi. Ulada &lt;code&gt;value&lt;/code&gt; yoki &lt;code&gt;writable&lt;/code&gt; o'rniga &lt;code&gt;get&lt;/code&gt; va &lt;code&gt;set&lt;/code&gt; funksiyalari bo'ladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nomzod&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;_ism&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ALi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;_tajriba&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;defineProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nomzod&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tajriba&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_tajriba&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;

    &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTajriba&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_tajriba&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newTajriba&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2 yildan kam tajribali nomzodlar ko'rib chiqilmaydi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Xulosa
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;getter va setter yuqoridagi 3 ta usul orqali yasaladi&lt;/li&gt;
&lt;li&gt;ular orqali qiymat olish va berishda qo'shimcha funksionallik berish va qiymatni boshqarish imkoniyatini beradi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Foydali bo'lgan bo'lsa ulashing ;-)&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>class</category>
      <category>object</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>JavaScript Class</title>
      <dc:creator>Davron Normo`minov</dc:creator>
      <pubDate>Sun, 24 Apr 2022 04:07:01 +0000</pubDate>
      <link>https://dev.to/davronny/javascript-class-1k7l</link>
      <guid>https://dev.to/davronny/javascript-class-1k7l</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhay9iquspv2yt6at7ccc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhay9iquspv2yt6at7ccc.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assalomu alaykum, bugungi maqolamiz JavaScript Class lari haqida bo'ladi.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  ES6 dan oldin
&lt;/h2&gt;

&lt;p&gt;ES6 dan oldin JS da class tushunchasi bo'lmagan.Biz bilgan class ni yaratish uchun constructor va prototype dan foydalanilgan.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;ali&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali Valiyev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ali&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getName&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Natija:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ali Valiyev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Endi yuqoridagi kodning qanday ishlashini tushuntiraman.&lt;/p&gt;

&lt;p&gt;Dastlab, &lt;code&gt;name&lt;/code&gt; xususiyatiga ega &lt;code&gt;Person&lt;/code&gt; konstruktor funksiyasi yaratildi. &lt;code&gt;prototype&lt;/code&gt; ga getName() funksiyasi biriktirildi, endi bu funksiyani &lt;code&gt;Person&lt;/code&gt; class ishlatilgan barcha holatlarda ishlatishimiz mumkin.&lt;/p&gt;

&lt;p&gt;Keyin esa &lt;code&gt;new&lt;/code&gt; operatori yordamida &lt;code&gt;Person&lt;/code&gt; klassidan namuna oldik. &lt;code&gt;ali&lt;/code&gt; ob'yekti prototipli vorislik orqali &lt;code&gt;Person&lt;/code&gt; va &lt;code&gt;Object&lt;/code&gt; klasslaridan namuna olganligi uchun endi ularning barcha xususiyatlaridan foydalana oladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;john&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;john&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Es6 da class ning e'lon qilinishi
&lt;/h2&gt;

&lt;p&gt;ES6 da class larni e'lon qilish uchun yangi sintaksis yaratildi. Yuqoridagi funksiya konstruktori yordamida yaratilgan class yangi sintaksisda quyidagicha yoziladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;getName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Person&lt;/code&gt; klassidagi &lt;code&gt;construtor()&lt;/code&gt; ichida olinadigan namunaning xususiyatlari e'lon qilinadi va &lt;code&gt;new&lt;/code&gt; operatori orqali klassdan namuna olinganda JavaScript avtomatik ravishda &lt;code&gt;constructor()&lt;/code&gt; ni chaqiradi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;ali&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali Valiyev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Person&lt;/code&gt; klassidagi &lt;code&gt;getName()&lt;/code&gt; &lt;u&gt;metod&lt;/u&gt; deb ataladi va bunday qo'llaniladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;obyektNomi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;metodNomi&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Misol uchun&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ali&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getName&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "Ali Valiyev"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Biz yuqorida &lt;code&gt;class&lt;/code&gt; ni maxsus funksiya dedik, buning isbotini ko'rish uchun &lt;code&gt;Person&lt;/code&gt; klassining tipini &lt;code&gt;typeof&lt;/code&gt; operatori orqali tekshiramiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// function&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Class va funksiya konstruktori
&lt;/h2&gt;

&lt;p&gt;Class va funksiya konstruktori orasida o'xshashlik bo'lishiga qaramasdan, ularda farqlanadigan muhim jihatlar bor.&lt;/p&gt;

&lt;p&gt;Birinchi, class e'lon qilinganda funksiyaga o'xshab &lt;code&gt;hoisting&lt;/code&gt; ga uchramaydi.&lt;/p&gt;

&lt;p&gt;Misol uchun, quyidagi kodni &lt;code&gt;Person&lt;/code&gt; klassi e'lon qilinishidan oldin yozsak, natija sifatida &lt;code&gt;ReferenceError&lt;/code&gt; ega bo'lamiz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;ali&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali Valiyev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Xatolik&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Uncaught&lt;/span&gt; &lt;span class="nx"&gt;ReferenceError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;defined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ikkinchi, class ichidagi barcha kodlar avtomatik ravishda &lt;code&gt;strict mode&lt;/code&gt; da ishlaydi.&lt;/p&gt;

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

&lt;p&gt;Va oxirigisi, class konstruktorini &lt;code&gt;new&lt;/code&gt; operatorisiz ishlatsak, xatolik beradi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;ali&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ali Valiyev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Xatolik&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Uncaught&lt;/span&gt; &lt;span class="nx"&gt;TypeError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Class&lt;/span&gt; &lt;span class="kd"&gt;constructor&lt;/span&gt; &lt;span class="nx"&gt;Person&lt;/span&gt; &lt;span class="nx"&gt;cannot&lt;/span&gt; &lt;span class="nx"&gt;be&lt;/span&gt; &lt;span class="nx"&gt;invoked&lt;/span&gt; &lt;span class="nx"&gt;without&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;new&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Xulosa
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;class yaratish uchun &lt;code&gt;class&lt;/code&gt; kalit so'zini ishlatamiz.&lt;/li&gt;
&lt;li&gt;class prototipli vorislikka asoslangan va kuchaytirilgan maxsus funksiya.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Foydali bo'lgan bo'lsa ulashing )&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>class</category>
      <category>web</category>
    </item>
  </channel>
</rss>
