Deep Devs | فرانت اند | بک اند | جاوااسکریپت | برنامه نویسی | برنامه نویسی وب
Ir al canal en Telegram
اگر با جاوااسکریپت مشکل داری، این چنل مخصوص خودته 🤝 دوبله بهترین دوره های جاوااسکریپت و ریکت دنیا رایگان: https://t.me/DeepDevs/2166 تبلیغات و تبادل نداریم گروه اصلی برای پرسش و پاسخ: @DeepDevsGpOriginal گروه چت: @InstaDevsGp
Mostrar más9 269
Suscriptores
Sin datos24 horas
+167 días
+3230 días
Archivo de publicaciones
وراثت توابع به چه معناست؟
🔸وراثت تابعی یعنی فرآیند وراثت ویژگیها از طریق اعمال یک تابع افزایشی بر یک نمونهٔ شیء است. در این روش تابع یک دامنه بسته (closure scope) ارائه میدهد که میتوانید از آن برای نگهداری بخشی از دادهها به صورت خصوصی استفاده نمایید. تابع افزایشی از گسترش شیء دینامیک بر اساس شیء نمونه با ویژگیها و متدهای جدید استفاده میکند.
🔸میکسینهای تابعی نمایشگرهایی هستند که توابع کارخانهای هستند که ویژگیها و رفتارها را به اشیاء اضافه میکنند، همانند ایستگاهها در یک assembly line
// تابع سازندهٔ شیء پایه
function Animal(data) {
var that = {}; // یک شیء خالی ایجاد میکند
that.name = data.name; // ویژگی "name" را به آن اضافه میکند
return that; // شیء را برمیگرداند
};
// ایجاد شیء فرزند، ارث بری از Animal پایه
function Cat(data) {
// شیء Animal را ایجاد میکند
var that = Animal(data);
// گسترش شیء پایه
that.sayHello = function() {
return 'Hello, I\'m ' + that.name;
};
return that;
};
// استفاده
var myCat = Cat({ name: 'Rufi' });
console.log(myCat.sayHello());
// خروجی: "Hello, I'm Rufi"
Channel:@js_challenges Group:@js_masters_gpآقا طی این یکی دو هفته خیلی از بچه ها اومدن عشق دادن به ما ❤️
بعضیا اومدن پیوی بعضیا تو گروه بعضیا رو من دیدم حتی دوبله ها داخل چنل خودشون منتشر کرده بودن بعضیا یوتیوب رو معرفی کرده بودن
یه سریا برای دوبله ها یه سریا برای یوتیوب مثل این دوستمون که عکسش رو گذاشتم یه سریا برای چالشا 🔥
یعنی واقعا دمتون گرم از این همه انرژی 🔥❤️
ضمنا اینم بگم که من این هفته امتحاناتم تموم میشه دوباره روند دوبله ها شروع میشه، منتظر باشید...
همتون مشتی هستید و با صفا ✌️
راستی آدرس یوتیوبمون رو هم میزارم براتون اگر دوست داشتید یه نگاه به ویدیوها بندازید و اگر خوشتون اومد ساب کنید ❤️
https://www.youtube.com/@codelabplus
Channel: @js_challenges | Group: @js_masters_gp
چه برایمان آورده ای کنسول؟
#quick_challenge
خروجی این کنسولا چیه عاقا؟
console.log(null == "null");
console.log(undefined == "undefiend");
console.log(NaN == Number("NaN"));
console.log(Error == new Error("Error"));
یه گپ تو گروهمون نشه دوستان؟منتظریم❤️😎
Channel:@js_challenges Group:@js_masters_gp6 سوءتفاهم در مورد جاوا اسکریپت!
پارت ۳
3: جاوااسکریپت یک زبان ناامن است
🔸امنیت یک نگرانی مشروع در توسعه وب است، اما ادعا کردن این است که جاوااسکریپت به طور اصولی ناامن است، یک اشتباه است. خود جاوااسکریپت به خودی خود ناامن نیست؛ بلکه مسائل امنیتی از نحوه کاربرد و پیادهسازی آن در برنامههای وب به وجود میآید.
🔸چالشهای امنیتی متداول در جاوااسکریپت شامل آسیبپذیریهای اسکریپتنویسی از راه دور(XSS) و دزدی درخواست از محل دیگر (CSRF) است. با این حال، این مسائل از طریق روشهای بهتر مانند اعتبارسنجی ورودی، رمزنگاری خروجی و مکانیسمهای اعتبارسنجی و اجازهدهی مناسب میتوانند کاهش یابند. چارچوبها و کتابخانههای مدرن جاوااسکریپت همچنین ویژگیهای امنیتی را در برگیرید تا به توسعهدهندگان کمک کند که برنامههایی امنتر بسازند.
Channel:@js_challenges Group:@js_masters_gp
تابع currying چیست؟
🔸تابع currying یک تابع است که چندین آرگومان را میگیرد و آنها را به یک دنباله از توابع با تنها یک آرگومان در هر زمان تبدیل میکند.
🔸به این ترتیب، یک تابع n-آرگومانی، به یک تابع تک آرگومانی تبدیل میشود و آخرین تابع، نتیجهی تمامی آرگومانها را در یک تابع برمیگرداند.
//تعریف تابع معمولی
function multiply(a, b, c) {
return a b c;
};
console.log(multiply(1, 2, 3));
// خروجی: 6
// تعریف تابع currying
function multiply(a) {
return (b) => {
return (c) => {
return a b c;
};
};
};
console.log(multiply(1)(2)(3));
// خروجی: 6
Channel:@js_challenges Group:@js_masters_gpتفاوت بین Target و currentTarget در زمینهٔ رویداد (event context) چیست؟
المنت target به عنوان المنت DOM اشاره دارد که رویداد را ایجاد میکند. به عبارت دیگر، currentTarget به عنوان المان DOM اشاره دارد که گوش کننده رویداد را گوش میدهد.
// html
<ul class="todo-list">
<li class="item">سگ خودتان را پیاده بردارید</li>
</ul>
/////////////////////////////////////////////////////////////////////////////////////
// js
const list = document.querySelector(".todo-list");
list.addEventListener("click", e => {
console.log(e.target);
// خروجی: <li class="item">سگ خودتان را پیاده بردارید</li>
console.log(e.currentTarget);
// خروجی: <ul class="todo-list"></ul>
});بنچمارک حلقهها با استفاده از ()console.time و ()console.timeEnd
🔸بسیار مفید است که دقیقاً بدانیم چه مدت طول کشیده است تا یک عملیات اجرا شود، به خصوص زمانی که از اشکالزدایی حلقههای کند استفاده میشود. حتی میتوانید با اختصاص label به متد، چندین تایمر را راهاندازی کنید. بیایید ببینیم چگونه کار میکند:
🔸با اجرای کد بالا میتوانید بنچمارک حلقه خود را بصورت میلی ثانیه در کنسول مشاهده کنید.
#Tips_N_Tricks
Channel:@js_challenges Group:@js_masters_gp
💎 نمایش تمامی خطا های برگشتی توسط Yup
شاید متوجه شده باشید زمانی که پکیج Yup داره فرمی رو اعتبار سنجی می کنه و به ارور میخوره فقط یک ارور رو برگشت میده در صورتی که فرم شما ممکنه شامل ارور های بیشتری باشه (مثلا ایمیل، سن و... نا معتبر باشه یا یوزر وارد نکرده باشه yup فقط میگه ایمیل نامعتبر است دیگه نمی نویسد که سن رو وارد نکردید و دیگر ارور ها).
🔸 برای حل این مسئله، مهم است بدونید که متد validate دو تا ورودی میگیره (که عموماً برخی از همکاران فقط یک ورودی بهش میدن) ورودی اول، مقادیر فرم هست که معمولاً به صورت آبجکت بهش میدیم و ورودی دوم، options هست که باید به صورت آبجکت داده شود. حالا اگه میخواید که تمامی ارور ها برگشت داده شود، به آپشن، ابجکت abortEarly: false رو بدید و در این صورت تمامی ارور ها برگشت داده میشود
💬 نکته مهم تر: از انجایی که ارور ها در (err)catch برگشت داده میشه، در این قسمت میتونید err.inner رو لاگ بگیرید و لیست ارور ها رو مشاهده کنید که متاسفانه به آبجکت inner خیلی کم پرداخته شده است.
Channel:@js_challenges
Group:@js_masters_gp
6 سوءتفاهم در مورد جاوا اسکریپت!
پارت ۲
2: جاوااسکریپت تنها برای توسعه فرانت اند است.
اگرچه جاوااسکریپت واقعاً زبان اصلی برای توسعه فرانت اند است، اما دامنه تأثیرش به فراتر از مرورگر گسترش یافته است. با ظهور تکنولوژیهایی مانند Node.js، اکنون جاوااسکریپت قابلیت اجرا شدن در سمت سرور را نیز دارد. این به این معنی است که میتوانید از جاوااسکریپت برای توسعه بک اند نیز استفاده نمایید و هم سمت فرانت و هم سمت بک اند از برنامههای وب را ایجاد کنید.
و در حقیقت Node.js به توسعهدهندگان این امکان را میدهد که برنامههای سروری با کارایی بالا، پرقدرت و موثر را با استفاده از جاوااسکریپت بسازند و این،جاوااسکریپت را که صرفاً یک زبان برای توسعه فرانت اند است را رد میکند!
Channel: @js_challenges | Group: @js_masters_gp
سوال: promise executor چیست؟
🔸تمام نمونههای Promise یک متد به عنوان آرگومان میپذیرند که executor نام دارد. این executor دو متد به عنوان آرگومان میپذیرد: resolve و reject. درون executor، اگر متد resolve فراخوانی شود، نمونه Promise برآورده میشود. اگر یک استثنا پرتاب شود، بهجای آن متد reject فراخوانی میشود و نمونه Promise رد میشود.
const executor = (resolve, reject) => {
setTimeout(() => resolve("I'm done"), 1000);
};
new Promise(executor).then(result => {
console.log(result);
// خروجی پس از 1000 میلیثانیه: I'm done
});
#Tips_N_Tricks
Channel:@js_challenges Group:@js_masters_gpاپراتور void چیست؟
🔸اپراتور void یک مقدار نامشخص را از یک عبارت ارزیابی شده بازمیگرداند. به عبارت دیگر؛ اپراتور void یک عبارت را مشخص میکند تا بدون بازگشت مقدار ارزیابی شود. این اپراتور معمولاً در جاوااسکریپت مشتری (Client-side JavaScript) استفاده میشود که مرورگر مقدار را نمایش ندهد.
function getYear() {
return 2020;
};
console.log(getYear());
// خروجی: 2020
console.log(void getYear());
// خروجی: undefined
// مورد کاربرد مفید
button.onclick = () => void getYear();
Channel:@js_challenges Group:@js_masters_gp6 سوءتفاهم در مورد جاوا اسکریپت!
پارت 1
1: جاوااسکریپت همان جاوا است
یکی از مستمر و گستردهیافتهترین سوءتفاهمها این است که جاوااسکریپت و جاوا یکسان یا زبانهای نزدیکی به یکدیگر هستند. در واقع، آنها کاملاً متفاوتاند. در حالی که هر دو برخی از دستورالعملهای اساسی و مفاهیم را به اشتراک میگذارند، اما به منظورهای مختلفی بکار میروند و ویژگیهای متمایزی دارند:
جاوا یک زبان استاتیکنوع، کامپایلشده است که اغلب برای ساخت برنامههای مستقل، برنامههای تلفن همراه و برنامههای سوی سرور استفاده میشود.
جاوااسکریپت یک زبان تایپپویا، تفسیری است که اصولاً برای توسعه وب استفاده میشود و امکان اسکریپتنویسی و تعاملی بر روی سمت مشتری را فراهم میکند.
شباهت در نامگذاری بین این دو زبان متاسفانه است و میتواند به سردرگمی منجر شود، اما آنها موجودیتهای جداگانهای با اکوسیستم و موارد استفاده خود هستند.
پ.ن.پ:دوستان این پست 6 پارت داره که ترجمه میکنیم و براتون قرار میدیم❤️
Channel:@js_challenges Group:@js_masters_gp
چی بگم والا،کدومه؟
#quick_challenge
خروجی کد پایین چیه؟
const array = [{ type: "array" }, 1, 2, 3, 4, 5, 6];
delete array[0];
console.log(typeof array[0]);
گیری،مشکلی،انتقادی،کمکی،هرچی بود تو گروه منتظرتونیم😎
@js_challenges
@js_masters_gp💎 بررسی آنلاین بودن یوزر
با استفاده از این تیکه کد به سادگی می توانید بررسی کنید که آیا یوزرتون آنلاین هست یا خیر.
انتشار یادتون نره ❤️
Channel:@js_challenges Group:@js_masters_gp
یه ویدیوی کوتاه برای مرور انواع توابع یا function ها داخل جاوااسکریپت
بهره ببرید 👌
https://youtube.com/shorts/BurPPSbAlUI?feature=share
Channel: @js_challenges | Group: @js_masters_gp
💎 مقادیر Truthy و Falsy
به مقادیری که به منزله ی FALSE ارزیابی میشه رو مقادیر Falsy میگیم.
🟡 در جاوااسکریپت 6 مقدار زیر رو به عنوان مقدار Falsy در نظر میگیره
undefined, null, NaN, 0, "" و falseبه مقادیری که به منزله ی TURE ارزیابی میشه رو مقادیر Truthy میگیم. 🟡 مقادیر غیر از مقادیر بالا Truthy تفسیر خواهد شد. 💬 نکته: مقدار 0 به عنوان Falsy شناخته میشود اما رشته ی "0" به عنوان Truthy تفیسر میشه. 💬 نکته 2: آرایه خالی یا آبجکت خالی به عنوان Truthy در نظر گرفته میشه. @js_challenges @js_masters_gp
قطعا فرانتچپتر مسیر شغلیتون رو متحول میکنه
