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
همه چیز از متد 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