فارسی
باز کردن در Telegram

پست همه چیز از متد hasOwn جاوااسکریپت ✌️

1 سپتامبر 2024
𔓙
𔓙
همه چیز از متد 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
18 · 1.1K ·

در همان حوالی فید

𔓙𔓙فکت 😂😂 #fun @CodeModuleGgenixبا Node-Schedule آشنا بشید 💀 ‏Node-Schedule یک پکیج برنامه ریزی قدرتمند و انعطاف پذیر مثل cron برای Node.js هست که به دولوپر ها این امکان رو میده، تا وظایف برنا
این پیام
𔓙𔓙این رسمش نبود کودکعلی 🤣 #fun @CodeModuleGgenixبا Nanoid بیشتر آشنا بشید 🦦 ‏Nanoid یک تولیدکننده رشته منحصر به فرد کوچک، امن و سازگار با URL برای Node.js هست. این برای تولید شناسه هایی طراحی شده که از نظر رم
CCode Module | کد ماژولCode Module | کد ماژول@CodeModule · کانال · فناوری
2 180مشترک594میانگین دسترسی پست
فید انجمن باز کردن در Telegram

فید عمومی باز از ایندکس جست‌وجو ChatCrawler — «Google برای Telegram عمومی»؛ با خزش انجمن به‌روز می‌شود. زمان‌ها به UTC است.

فقط محتوای عمومی، API رسمی Telegram. دربارهٔ ما · پرسش‌ها · محدودیت‌های ایندکس · حذف یک صفحه · کاتالوگ · جست‌وجو · روش محاسبهٔ ما