با عرض سلام خدمت کاربران محترم سایت پی وی لرن.
با دومین جلسه از دوره آموزش React JS در خدمت شما عزیزان هستیم.
در این جلسه مروری بر ES6 (گرامر ES6) که جدیدترین نسخه زبان جاوا اسکریپت است، خواهیم داشت.
ES6 مخفف ECMAScript 6 است.
ECMAScript برای استاندارد سازی جاوا اسکریپت ایجاد شده و ES6 نسخه ششم آن است.
React هم از ES6 برای قابلیت های جدید از جمله شی گرایی بهتر و پیشرفته تر استفاده میکند.
ES6 برای اولین بار امکان استفاده از کلاس ها در جاوا اسکریپت را معرفی کرد.
کلاس ها برای ساخت اشیا (object) به کار میروند.
برای تعریف کلاس از کلمه کلیدی class استفاده میکنیم. همچنین کلاس ها دارای تابعی به نام constructor (سازنده) هستند که برای تعریف و مقداردهی اولیه متغیر ها استفاده میشود.
مثال:
1 2 3 4 | tructor(name) { this.brand = name; } } |
برای ساخت اشیا از روی کلاس نیز از کلمه کلید new استفاده میکنیم:
1 2 3 4 5 6 7 | class Car { constructor(name) { this.brand = name; } } mycar = new Car("Ford"); |
هنگامی که یک شی ایجاد شود، تابع سازنده یا constructor به صورت خودکار اجرا میشود.
متد ها همانند توابع هستند با این تفاوت که در کلاس تعریف میشوند و جزئی از ان هستند.
در مثال زیر متدی به نام present را تعریف و با استفاده از شی mycar ان را فراخوانی کرده ایم.
1 2 3 4 5 6 7 8 9 10 11 12 | class Car { constructor(name) { this.brand = name; } present() { return 'I have a ' + this.brand; } } mycar = new Car("Ford"); mycar.present(); |
وراثت ویژگی در برنامه نویسی شی گرایی است که این امکان را به ما میدهد تا یک کلاس را از کلاس دیگر ارث بری کنیم. یعنی به تمام متد ها و متغیر های کلاس والد در کلاس فرزند دسترسی داشته باشیم.
برای ایجاد وراثت از کلمه کلیدی extends استفاده میکنیم.
در مثال از کلاس model، کلاس car را به ارث میبرد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class Car { constructor(name) { this.brand = name; } present() { return 'I have a ' + this.brand; } } class Model extends Car { constructor(name, mod) { super(name); this.model = mod; } show() { return this.present() + ', it is a ' + this.model } } mycar = new Model("Ford", "Mustang"); mycar.show(); |
خروجی:
1 | I have a Ford, it is a Mustang |
متد super به متد سازنده کلاس والد اشاره دارد.
با استفاده از Arrow Functions نیازی به کلیمه کلیدی fuction برای تعریف توابع نیست و در نتیجه کد کمتری تولید میشود.
تابع معمولی:
1 2 3 | hello = function() { return "Hello World!"; } |
تابع Arrow:
1 2 3 | hello = () => { return "Hello World!"; } |
حتی میتوان برای کوتاه تر شدن کد از آکولاد ها و کلمه کلیدی return نیز چشم پوشی کرد:
1 | hello = () => "Hello World!"; |
نکته : این کار فقط برای توابعی که حاوی یک خط کد هستند امکان پذیر است.
در مثال از از تابع arrow با پارامتر استفاده میکنیم:
1 | hello = (val) => "Hello " + val; |
قبل از ES6 تنها یک نوع متغیر در جاوا اسکریپت وجود داشت که با کلمه کلیدی var تعریف میشد.
اگر بدون کلمه کلیدی var تعریف میشدند، به شی سراسری اختصاص مییافتند.
در ES6 دو نوع جدید متغیر ها با کلمات کلیدی let و const معرفی شدند.
اگر متغیر های var در خارج از توابع تعریف شوند، به شی سراسری تعلق دارند و از همه جا میتوان به آن ها دسترسی پیدا کرد.
اگر درون توابع تعریف شوند، فقط در همان تابع قابل دسترسی هستند.
اگر دورن یک بلاک کد مانند حلقه ها تعریف شوند، در خارج بلاک نیز قابل دسترس خواهند بود.
متغیر های let فقط در بلوک های کد و توابعی که تعریف میشوند، در دسترس هستند.
متغیر های const نیز فقط در بلوک هایی که تعریف میشوند، در دسترس هستند. همچنین مقدار این متغیر ها پس از مقداردهی اولیه هرگز تغییر نمیکند.
جلسه مروری بر ES6 نیز به پایان رسید.
در جلسه بعد به آموزش رندر HTML در React خواهیم پرداخت.