Code Module | کد ماژول
1.91K subscribers
357 photos
42 videos
6 files
355 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
با استفاده از navigator در جاوااسکریپت، چه کارهایی میتونیم انجام بدیم؟ 🪐

تشخیص نوع دستگاه و سیستم‌عامل کاربر:

با استفاده از navigator.userAgent می‌تونیم نوع دستگاه و سیستم‌عامل کاربر رو تشخیص، و محتوای سایت یا اپلیکیشن رو بر اساس اون تنظیم کنیم.
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.includes('iphone')) {
console.log('User is on an iPhone');
} else if (userAgent.includes('android')) {
console.log('User is on an Android device');
}


دسترسی به اطلاعات شبکه (Network Information API):

از navigator.connection میتونین برای دریافت اطلاعات شبکه کاربر مثل نوع ارتباط (WiFi, 4G) و سرعت اون استفاده کنیم.
const connection = navigator.connection  navigator.mozConnection  navigator.webkitConnection;
if (connection) {
console.log('Effective connection type:', connection.effectiveType);
console.log('Downlink speed:', connection.downlink, 'Mbps');
}


تشخیص وضعیت آنلاین/آفلاین بودن کاربر:

با استفاده از navigator.onLine می‌تونیم وضعیت آنلاین یا آفلاین بودن کاربر رو بررسی کنیم و تجربه کاربری رو بهبود ببخشیم.
if (navigator.onLine) {
console.log('User is online');
} else {
console.log('User is offline');
}


استفاده از Web Share API برای به اشتراک گذاری محتوا:

با استفاده از navigator.share می‌تونیم امکان اشتراک‌گذاری محتوا رو در دستگاه‌های موبایل فراهم کنیم.
const shareData = {
title: 'Example Page',
text: 'Check out this cool page!',
url: 'https://example.com'
};

navigator.share(shareData).then(() => {
console.log('Content shared successfully');
}).catch(err => {
console.error('Error sharing content:', err);
});


دسترسی به باتری دستگاه (Battery Status API):

با استفاده از navigator.getBattery می‌تونیم اطلاعاتی مثل سطح باتری و وضعیت شارژ رو دریافت کنید.
avigator.getBattery().then(battery => {
console.log('Battery level:', battery.level * 100 + '%');
console.log('Charging:', battery.charging ? 'Yes' : 'No');
});


#navigator #javascript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
👌43🔥7❤‍🔥4💔4
همه چیز از متد hasOwn جاوااسکریپت ✌️

کارایی hasOwn تقریباً مشابه hasOwnProperty هست و این متد به صورت استاتیک، از آبجکت گلوبال Object در دسترس هست و بررسی می‌کنه که آیا یک پراپرتی داخل یک آبجکت خاص وجود داره یا خیر. خروجی این متد یک مقدار بولین (true یا false) هست.

const person = { name: 'Emily' }; 

Object.hasOwn(person, 'name'); // true
person.hasOwnProperty('name'); // true


مستندات MDN میگه hasOwn قراره جایگزین hasOwnProperty بشه. اما چرا؟ چرا hasOwn رو به hasOwnProperty ترجیح بدیم؟

دلایل مختلفی برای معرفی این متد وجود داره. ابتدای باید محدودیت‌های hasOwnProperty رو بشناسیم. اول اینکه این متد خیلی راحت می‌تونه Override بشه:

const person = { 
name: 'Mario',
hasOwnProperty() {
return true;
},
}
alert(person.hasOwnProperty('age')); // true

همچنین وقتی که یک آبجکت رو به صورت زیر می‌سازیم:
const person = Object.create(null); 


اینجا معمولاً هدفمون اینه که یک آبجکت بدون پروتوتایپ می‌خوایم. یعنی بدون والد. پس توی چنین آبجکتی هیچ یک از پراپرتی‌های والد وجود نداره. از جمله hasOwnProperty. پس با صدا زدن این متد از این آبجکت خطا می‌گیریم:

const person = Object.create(null); 

person.hasOwnProperty('name'); // TypeError: person.hasOwnProperty is not a function


‏Override کردن یا حذف کردن چنین متدی ممکنه برای یک کتابخونه خارجی دردسر ساز بشه. برای حل چنین مشکلی نویسنده اون کتابخونه مجبور بود به چنین راه حل‌هایی رو بیاره:

const person = { 
hasOwnProperty() {
return true;
},
}

const exists = Object.prototype.hasOwnProperty.call(person, 'age'); alert(exists); // false


پس دولوپرای جاوااسکریپت به این فکر افتادن که یک متد اختصاصی برای حل چنین مشکلاتی معرفی کنن. اسم این متد رو گذاشتن hasOwn. اگه از این متد برای آبجکت‌های بالا استفاده کنیم دیگه خطا نمی‌گیریم:

const person1 = Object.create(null); 
alert(Object.hasOwn(person1, 'name')); // false
const person2 = {
hasOwnProperty: () => true,
}

alert(Object.hasOwn(person2, 'name')); // false


همونطور که گفتیم اگه یک پراپرتی توی یک آبجکت وجود داشته باشه، خروجی این متد true هست. حتی اگه مقدار پراپرتی null یا undefined باشه:

const person = {}; 
Object.hasOwn(person, 'name'); // false

person.age = 4;
Object.hasOwn(person, 'age'); // true

person.prop = null;
Object.hasOwn(person, 'prop'); // true

person.prop = undefined;
Object.hasOwn(person, 'prop'); // true

از این متد نمی‌تونیم برای مقادیر null و undefined استفاده کنیم:
// TypeError: can't convert undefined to object 
Object.hasOwn(undefined, 'prop');

// TypeError: can't convert null to object
Object.hasOwn(null, 'prop');


همچنین با hasOwn می‌تونیم بررسی کنیم که آیا یک آرایه یک ایندکس خاص داره یا نه:

const numbers = ['one', 'two']; 

Object.hasOwn(numbers, 1); // true
Object.hasOwn(numbers, 2); // false


همچنین باید بدونیم که متد hasOwn یک متد کاملاً جدید هست و فقط مرورگرهای جدید از اون پشتیبانی می‌کنن.

#hasown #javascript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👌5
مدیریت کارآمد حافظه در برنامه های بزرگ مقیاس جاوا اسکریپتی، برای اطمینان از عملکرد بهینه، جلوگیری از نشت حافظه و حفظ مقیاس پذیری ضروری هست. این مقاله استراتژی‌ها و مثال‌های کدی رو بررسی میکنه تا به شما در مدیریت کارآمد حافظه و بهینه‌سازی پروژه‌هاتون کمک کنه.

🔗 Link Article

#javascript #memory
@CodeModule
11👌1
اگه دوست دارید بیشتر در مورد Hight Order Function (HOF) در جاوا اسکریپت بدونید، این مقاله به صورت خلاصه و با مثال به همراه توضیحات خوب و قابل فهم، هر کدوم از فانکشن هارو توضیح داده.

🔗 Link Article

#javascript
@CodeModule
11👌3🔥1