آموزش جامع جاوا اسکریپت به همراه اکما اسکریپت
آموزش جامع جاوا اسکریپت به همراه اکما اسکریپت طوری طراحی شده که بتونی به طور کامل و کاربردی با زبان جاوااسکریپت و دنیای هیجانانگیز ECMAScript آشنا بشی. از مفاهیم پایه گرفته تا ویژگیهای جدید و خفن نسخههای پیشرفته (از ES1 تا ESNext)، همه رو به سادهترین شکل ممکن یاد میگیری. ما توی این دوره، هم اصول اولیه و مبانی رو مرور میکنیم و هم عمیقتر وارد مباحثی مثل مدیریت استثناها، کار با ماژولها و برنامهنویسی غیرهمزمان (Asynchronous) میشیم. همه اینا با مثالهای واقعی و پروژههای عملی همراهه، طوری که به راحتی دستت بیاد چطوری این مهارتها رو توی پروژههات به کار ببری. اگر همیشه دوست داشتی برنامههای پویا و کاربردی برای وب بسازی و به یکی از ستونهای اصلی دنیای وب مسلط بشی، این دوره دقیقاً همون چیزیه که دنبالش بودی! آمادهای باهم بریم سراغ چالشها و یادگیری عمیق؟ پس منتظر چی هستی؟ بیاید شروع کنیم!
سرفصل های دوره
برای مشاهده ویدیوها ابتدا دکمه شرکت در دوره را بزنید
فصل اول: مبانی کامپیوتر و برنامهنویسی
در این قسمت به معرفی و آشنایی با جاوااسکریپت میپردازیم؛ زبانی که در سال 1995 توسط برندون ایش توسعه یافت و با قابلیتهایی همچون شیگرایی و برنامهنویسی غیرهمزمان، به یکی از ارکان اصلی توسعه وب تبدیل شده است.
در این قسمت به سختافزار و RAM میپردازیم. RAM که نوعی حافظه موقت است، دادهها و برنامههای در حال اجرا را ذخیره میکند و با سرعت بالا به پردازنده امکان دسترسی سریع به اطلاعات را میدهد. اما با خاموش شدن سیستم، دادههای RAM از بین میروند، بنابراین برای ذخیرهسازی دائمی به دیسک سخت یا SSD نیاز است. RAM نقش مهمی در سرعت و عملکرد سیستم دارد و مقدار کافی آن میتواند تجربه کاربری بهتری را در اجرای برنامهها و بازیها فراهم کند.
در این قسمت به سختافزار و پردازنده (CPU) میپردازیم. CPU به عنوان مغز کامپیوتر، مسئول پردازش دستورات و انجام محاسبات است. این واحد دادهها را از RAM دریافت کرده، پردازش میکند و نتایج را به سایر اجزاء ارسال میکند. سرعت و کارایی CPU تحت تأثیر تعداد هستهها، فرکانس کلاک و معماری آن بوده و امکان اجرای همزمان برنامهها را فراهم میسازد.
در این قسمت به الگوریتم و فلوچارت میپردازیم. الگوریتم مجموعهای از دستورالعملها برای حل یک مسئله یا انجام وظیفه است و به بهبود عملکرد برنامهها کمک میکند. فلوچارت نیز ابزاری گرافیکی برای نمایش مراحل الگوریتم یا فرآیندهاست و با اشکال مختلف، عملیات و تصمیمگیریها را نشان میدهد، که در تحلیل و بهبود فرآیندها بسیار کاربردی است.
فصل دوم: جاوااسکریپت (VanillaJS)
در این قسمت به متغیر var و نقش مفسر (Interpreter) و مترجم (Compiler) در جاوااسکریپت میپردازیم. با var میتوان متغیرهایی با دامنه تابعی یا جهانی تعریف کرد و به دلیل ویژگی hoisting، حتی قبل از تعریف به آنها دسترسی داشت. مفسرها کد را خطبهخط اجرا میکنند و به سرعت امکان آزمایش و شناسایی خطاها را فراهم میسازند، در حالی که مترجمها کد را پیش از اجرا بهینه کرده و با افزایش کارایی، اجرای سریعتری را تضمین میکنند.
در این قسمت به حساسیت به حروف بزرگ و کوچک در جاوااسکریپت پرداخته میشود. در این زبان، حروف بزرگ و کوچک در نامگذاری متغیرها و توابع تفاوت دارند، مانند myVariable و myvariable که بهعنوان دو متغیر جداگانه شناخته میشوند.
در این قسمت به قوانین نامگذاری در جاوااسکریپت پرداخته میشود. نامگذاری باید با حروف یا نمادهایی مانند $ و _ آغاز شود، اما شروع با عدد مجاز نیست. جاوااسکریپت به حروف بزرگ و کوچک حساس است، بنابراین نامهای مشابه با حروف متفاوت، جداگانه در نظر گرفته میشوند. همچنین، باید از کلمات کلیدی زبان برای نامگذاری اجتناب شود تا از بروز خطا جلوگیری شود.
در این قسمت به قراردادهای نامگذاری (naming conventions) در جاوااسکریپت پرداخته میشود. استفاده از camelCase برای متغیرها و توابع، PascalCase برای کلاسها و توابع سازنده، UPPERCASE برای ثابتها و snake_case برای موارد خاص توصیه میشود. رعایت توصیفگر بودن و پرهیز از نامهای مبهم به افزایش خوانایی و نگهداری کد کمک کرده و از بروز خطا جلوگیری میکند.
در این جلسه، ما به ساخت یک پروژه ساده و جذاب به نام بازی سنگ کاغذ قیچی میپردازیم. این بازی، که یکی از بازیهای کلاسیک و محبوب است، به کاربران این امکان را میدهد که با انتخاب یکی از سه گزینه (سنگ، کاغذ یا قیچی) با کامپیوتر رقابت کنند. ما از مفاهیم اساسی جاوااسکریپت، از جمله متغیرها و شرطها برای پیادهسازی منطق بازی استفاده خواهیم کرد. کاربران با انتخاب گزینههای خود و مشاهده نتیجه بازی (برنده، بازنده یا تساوی) میتوانند تجربهای سرگرمکننده و تعاملی داشته باشند. این پروژه به ما کمک میکند تا مهارتهای برنامهنویسی خود را در عمل بهبود بخشیم و با چالشهای واقعی در توسعه نرمافزار آشنا شویم.
در این جلسه، ما به ساخت یک پروژه برنامه اجاره خودرو میپردازیم که به کاربران این امکان را میدهد تا خودروهای مختلف را اجاره کنند. در این برنامه از ساختار کنترل جریان switch و case برای مدیریت انتخابهای مختلف کاربران استفاده خواهیم کرد. کاربران با انتخاب نوع خودرو (مانند سدان، SUV یا وانت) میتوانند جزئیات مربوط به هر نوع را مشاهده کرده و قیمتهای مربوطه را دریافت کنند. با استفاده از switch، ما میتوانیم بهراحتی بین انواع خودروها جابهجا شویم و برای هر انتخاب کاربر یک پاسخ مناسب ارائه دهیم. این پروژه نه تنها به ما کمک میکند تا با مفاهیم اصلی جاوااسکریپت آشنا شویم، بلکه مهارتهای برنامهنویسی خود را در طراحی سیستمهای تعاملی و کاربرپسند تقویت خواهیم کرد.
در این پروژه، با استفاده از حلقه for، به ارسال پیامک به چندین کاربر میپردازیم. با تعریف یک آرایه از شمارههای تماس کاربران، میتوانیم به راحتی بر روی این آرایه تکرار کنیم و برای هر کاربر یک پیامک ارسال کنیم. حلقه for به ما این امکان را میدهد که به سادگی به هر شماره تماس دسترسی پیدا کرده و از یک تابع ارسال پیامک برای هر کاربر استفاده کنیم. این پروژه به ما کمک میکند تا مهارتهای خود را در کار با حلقهها و مدیریت دادهها تقویت کنیم و درک بهتری از نحوه استفاده از برنامهنویسی برای اتوماسیون وظایف روزمره پیدا کنیم.
در این پروژه، با استفاده از یک تابع، بازی سنگ، کاغذ، قیچی را طراحی میکنیم که از کاربر ورودی میگیرد. تابعی به نام playایجاد میشود که مسئول دریافت انتخاب کاربر (سنگ، کاغذ یا قیچی) و انجام بازی است. در این تابع، انتخاب تصادفی کامپیوتر نیز انجام میشود و سپس نتیجه بازی (برد، باخت یا تساوی) بررسی میشود. با این روش، میتوانیم کد را به صورت سازمانیافته و قابل استفاده مجدد بنویسیم و به کاربر امکان بدهیم تا ورودی خود را به سادگی وارد کند. این پروژه به ما کمک میکند تا مهارتهای خود را در کار با توابع و دریافت ورودی از کاربر تقویت کنیم و به درک بهتری از منطق بازیها دست یابیم.
در این پروژه، ما به بررسی و پیادهسازی دنباله فیبوناچی با استفاده از توابع بازگشتی میپردازیم. دنباله فیبوناچی به گونهای تعریف میشود که هر عدد در دنباله برابر با مجموع دو عدد قبلی خود باشد، به این صورت که F(0)=0F(0) = 0F(0)=0 و F(1)=1F(1) = 1F(1)=1. با استفاده از یک تابع بازگشتی، میتوانیم به سادگی هر عدد از دنباله را محاسبه کنیم. این رویکرد به ما اجازه میدهد که الگوریتمی ساده و خوانا برای تولید اعداد فیبوناچی ایجاد کنیم. هر بار که تابع فراخوانی میشود، دو فراخوانی جدید برای محاسبه دو عدد قبلی ایجاد میکند، که این باعث میشود پروژه بهعنوان یک مثال عالی از قدرت توابع بازگشتی و قابلیتهای آنها در برنامهنویسی نمایش داده شود.
فصل سوم: اکمااسکریپت
پروژه محاسبه حقوق بر اساس سطح برنامهنویسی به کاربران این امکان را میدهد که با وارد کردن سطح مهارت خود (مانند مبتدی، متوسط یا پیشرفته)، حقوق مناسب را براساس معیارهای مشخص محاسبه کنند. این برنامه میتواند شامل ویژگیهایی مانند محاسبه پاداش، مالیات و نمایش خلاصهای از اطلاعات حقوق و مزایا باشد.
پروژه فروشگاه کتاب میتواند به کاربران این امکان را بدهد که کتابهای مختلف را مرور کرده، اطلاعات آنها را مشاهده و خریداری کنند. این سیستم میتواند شامل ویژگیهایی مانند جستجوی پیشرفته، سبد خرید، مدیریت موجودی، و نظرات کاربران باشد و از مفاهیم شیگرایی برای ساخت کلاسها و مدیریت دادهها استفاده کند.
فصل چهارم: مدل شی سند (Document Object Model یا DOM)
فصل پنجم: فصل پنجم مدل شی مرورگر (BOM یا Browser Object Model)
فصل ششم: دیباگ ، مدیریت ونمایش خطا ها
نظرات شما
سلام وقت بخیر اگر بخوام تابع نوع symbol رو در یک آبجکت معمولی ایجاد کنم روش ساخت و استفاده به چه صورته ؟؟ به این روش خطا داره!!؟؟ ساخت: [showId]=function() { return this.id + " " + this.age; } استفاده: document.write(person[showId]()); همینطور پراپرتی از نوع سیمبل رو در داخل آبجکت به این صورت مقدار دهی میشه؟؟ const person = { id:123, firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue", [id۱]:21 {
سلام رضای عزیز..برای استفاده از `Symbol` در آبجکتها، اول باید یه `Symbol` بسازی و از اون به عنوان کلید استفاده کنی. مثلا میتونی یه تابع به اسم `showId` توی آبجکت قرار بدی به این صورت: `const showId = Symbol('showId'); person[showId] = function() { return this.id + " " + this.age; }`. حالا برای دسترسی به این تابع باید از `person[showId]()` استفاده کنی. همچنین میتونی پراپرتیها رو با `Symbol` هم به آبجکت اضافه کنی، مثلا با `const id1 = Symbol('id1'); person[id1] = 21;`، که این ویژگیها همیشه منحصر به فرد و از بقیه کلیدها جدا میمونن و هیچوقت تداخل ایجاد نمیکنن.
با سلام و خسته نباشید. آیا نوع داده symbolفقط برای آبجکت استفاده میشه؟؟ اینکه فرموده بودید نوع داده سیمبل رو با دات نمیشه تغییر داد خارج از محدوده آبجکت اینطور نیست با براکت مقدارش تغییر میکنه!!؟؟ const user=new Person("123","ali","12345"); document.write(user[_id]); user[_password]="7417"; document.write(user[_password]);
سلام رضای عزیز..Symbol تو جاوااسکریپت بیشتر واسه ساختن کلیدهای یکتا تو آبجکت استفاده میشه. خودش تغییر نمیکنه، ولی اگه تو آبجکت ازش بهعنوان کلید استفاده کنی، میتونی مقدارشو با براکت ([]) عوض کنی. با نقطه (.) نمیتونی بهش دسترسی پیدا کنی، چون خاصیت یکتا بودنش باعث میشه فقط تو حالت براکت قابل دسترس باشه. بیرون از آبجکت هم به درد مقایسه یا ساختن شناسههای خاص میخوره، ولی تغییرپذیر نیست.
باسلام وخسته نباشید ویدیوی مربوط به آشنایی با pramisدر ES6 مشکل دارد و وجود ندارد لطف کنید اصلاحش کنید.
سلام رضای عزیز.. ویدیو قرار گرفت.