Недавно я работал над вариантом использования, когда у меня был объект, как показано ниже.
let obj1 = { name: "Dr Strange", stone: "Time", status: "alive" }
Здесь API был разработан таким образом, что нам нужно было отправлять stone
только тогда, когда status
было Time
. Также по какой-то причине мне был предоставлен входной объект в указанном выше формате.
Я хотел отредактировать вышеуказанный объект и просто полностью удалить stone
property, если status !== 'active'
. Итак, что я делаю, это
//incorrect way if(obj1.status !== 'active') obj1.stone= undefined;
Один из моих друзей сказал мне, что это кажется неправильным, так как я пытался удалить свойство, установив для него значение undefined
. Поэтому я спросил о правильном способе, но он не мог придумать другого способа, который сделал бы это лучше. Я использовал этот путь и продвинулся вперед в то время.
Недавно я наткнулся на ключевое слово delete
в JavaScript, о котором раньше не знал. Я также понял, что когда мы устанавливаем для какого-либо свойства значение undefined
, мы на самом деле не удаляем это свойство.
Вот пример тому доказательство. Теперь, когда мы console.log вышеуказанный объект
console.log(obj1) // {name: "Vision", stone: "Time", alive: undefined}
Таким образом, свойство alive
не определено, но все еще присутствует в объекте. Итак, правильный способ сделать это:
let obj1 = { name: "Dr Strange", stone: "Time", alive: true } delete obj1.alive; obj1 // {name: "Vision", stone: "Soul"}
Итак, теперь свойство полностью удалено из объекта вместо того, чтобы иметь значение undefined
. Это не только удаляет свойство из объекта, но и экономит память, удаляя его ссылку.
Но не беспокойтесь о докторе Стрэндже, он прячется где-то в прошлом, так что вполне может прийти спасти Мстителей в «Финале игры».