ساده ترین راه برای حذف یک ویژگی از یک شی در جاوا اسکریپت استفاده از آن است delete
اپراتور.
delete objectName.propertyName;
برای مثال، اگر یک شی به نام دارید person
با ملک age
می توانید حذف کنید age
مثل این:
delete person.age;
پس از اجرای این کد، person
شی دیگر وجود نخواهد داشت age
ویژگی. توجه داشته باشید که این فقط ویژگی را از شی حذف می کند. بر اشیایی که به همان ویژگی اشاره می کنند تأثیر نمی گذارد.
همچنین میتوانید از عملگر دسترسی در براکتهای مربع برای حذف ویژگی یک شی استفاده کنید:
delete obj[prop];
این راهنما رایجترین روشهای حذف ویژگیها از اشیاء را به شما نشان میدهد. اگر پاسخ بالا کافی است، از خواندن دست بردارید. اما برای بررسی جاوا اسکریپت و یادگیری روش ها و توابع مفید، به شما توصیه می کنم به خواندن پست ادامه دهید. در پایان این راهنما، نحوه جلوگیری از حذف اموال را یاد خواهید گرفت!
بیایید به آن بپریم!
1. عملگر حذف.
در جاوا اسکریپت، delete
اپراتور یک ویژگی را از یک شی حذف می کند. به طور خاص، ویژگی و مقدار آن را حذف می کند و برمی گرداند true
اگر ملک با موفقیت حذف شد.
مثلا:
// Define an object with some properties var myObject = { property1: "Hello", property2: "World" }; // Delete the property2 property from the object delete myObject.property2; // Print the object to see the result console.log(myObject);
خروجی:
{ property1: 'Hello' }
اینجا delete
اپراتور حذف می کند property2
از جانب myObject
. بعد از delete
عبارت تکمیل شد، شی دیگر وجود نخواهد داشت property2
دارایی و ارزش آن خواهد بود undefined
.
توجه داشته باشید که راه دیگری برای حذف یک ویژگی با عملگر حذف استفاده از براکت مربع برای دسترسی به ویژگی است.
برای مثال مثال بالا را تکرار می کنیم اما استفاده کنید myObject['property2']
بجای myObject.property2
.
var myObject = { property1: "Hello", property2: "World" }; // Delete the property2 property from the object delete myObject['property2']; console.log(myObject);
2. اپراتور…
یکی دیگر از اپراتورهای محبوب جاوا اسکریپت که ممکن است با آن آشنا باشید، عملگر spread یا عملگر سه نقطه نام دارد....
).
به یک معنا، شما می توانید از این عملگر برای حذف یک ویژگی از یک شی استفاده کنید. در واقع، فقط یک شی جدید ایجاد می کند که خاصیتی را که شما “حذف کرده اید” را ندارد.
بنابراین برای حذف یک ویژگی از یک شی با استفاده از عملگر spread، یک شی جدید ایجاد کنید که شامل تمام خصوصیات شی اصلی به جز ویژگی مورد نظر برای حذف شود.
مثلاً حذف کنیم prop2
از یک شی با سه ویژگی:
const obj = { prop1: 'value1', prop2: 'value2', prop3: 'value3' }; // Create a new object with all of the properties of `obj` except `prop2` const newObj = { ...obj, prop2: undefined }; console.log(newObj); // Output: { prop1: 'value1', prop3: 'value3' }
در این کد:
- شما یک شی ایجاد می کنید
obj
که دارای سه خاصیت است:prop1
،prop2
وprop3
. - سپس یک شی جدید به نام ایجاد می کنید
newObj
که شامل تمام خواص ازobj
جزprop2
.
مرحله نهایی با استفاده از نحو انتشار (...obj
). هنگامی که به این روش استفاده می شود، به سادگی یک شی جدید را بازسازی می کند که شامل تمام ویژگی های اصلی است obj
. سپس شما تنظیم کنید prop2
به undefined
در شی جدید، که به طور موثر آن را از شی جدید ایجاد شده حذف می کند.
توجه داشته باشید که این روش فقط یک شی جدید با ویژگی های مورد نظر شما ایجاد می کند. شی اصلی را تغییر نمی دهد. برای حذف واقعی یک ویژگی از یک شی به طوری که شما شی اصلی را تغییر دهید، از استفاده کنید delete
اپراتور:
const obj = { prop1: 'value1', prop2: 'value2', prop3: 'value3' }; // Remove the `prop2` property from `obj` delete obj.prop2; console.log(obj); // Output: { prop1: 'value1', prop3: 'value3' }
3. متد Reflect.deleteProperty() .
این Reflect
شی در جاوا اسکریپت یک شی داخلی است که روش هایی را برای عملیات جاوا اسکریپت رهگیری شده ارائه می دهد. شبیه به Proxy
اما به شما اجازه نمی دهد که رفتار سفارشی را برای عملیات فردی تعریف کنید.
برای حذف یک ویژگی از یک شی با استفاده از Reflect.deleteProperty()
روش، می توانید از نحو زیر استفاده کنید:
Reflect.deleteProperty(object, propertyName);
اینجا، object
شیئی است که می خواهید ویژگی را از آن حذف کنید، و propertyName
رشته ای است که نام ویژگی مورد نظر را برای حذف مشخص می کند. این روش برمی گردد true
اگر دارایی با موفقیت حذف شد، یا false
اگر ویژگی را نتوان حذف کرد (به عنوان مثال، اگر نمی توان آن را پیکربندی کرد).
در اینجا مثالی از نحوه استفاده از این روش برای حذف یک ویژگی از یک شی آورده شده است:
// Define an object with a property that we want to delete const obj = { name: "John Doe", age: 15 }; // Delete the "name" property from the object const result = Reflect.deleteProperty(obj, "name"); // Print the result of the operation console.log(result); // true console.log(obj); // { age: 15 }
در این مثال، Reflect.deleteProperty()
روش حذف می شود name
دارایی از obj
اشیاء result
متغیر تنظیم شده است true
برای نشان دادن اینکه دارایی با موفقیت حذف شده است.
چگونه از حذف اموال جلوگیری کنیم؟
شاید برای شما مفید باشد که بدانید جاوا اسکریپت همچنین به شما امکان می دهد اشیاء خود را طوری پیکربندی کنید که نتوانید یک ویژگی خاص را حذف کنید.
برای این کار استفاده کنید Object.defineProperty()
روشی که به شما اجازه می دهد تا ویژگی های یک شی را تعریف یا تغییر دهید. برای راه اندازی می توانید از این روش استفاده کنید configurable
دارایی اموال به false
که از حذف اموال جلوگیری می کند.
مثلاً پیشگیری کنیم name
خاصیتی که نباید از شی زیر حذف شود:
let myObject = { name: 'John', age: 30 }; Object.defineProperty(myObject, 'name', { configurable: false }); delete myObject.name; console.log(myObject); // Output: { name: 'John', age: 30 }
همانطور که می بینید، حذف ملک name
دیگر امکان پذیر نیست این به دلیل محدودیتی است که ما روی شی قرار داده ایم.
انجام دادن name
ویژگی را می توان دانلود کرد، فقط تنظیم کنید configurable
بازگشت به true
.
let myObject = { name: 'John', age: 30 }; Object.defineProperty(myObject, 'name', { configurable: true }); delete myObject.name; console.log(myObject); // Output: { age: 30 }
با تشکر برای خواندن. کد نویسی مبارک!
همچنین بخوانید
عملگر توزیع (…) در جاوا اسکریپت