Как удалить объект через функцию в JS? var person = {
'firstName': 'Alex',
'lastName': 'Medvedev',
'getFullName': function() {
return person.firstName + ' ' + this.lastName;
}
}
console.log(person);
// killer functions
var kill = function(obj) { // delete the object - does not work
delete obj;
}
var kill2 = function(obj) { // replace with an empty object - does not work
obj = {};
}
var kill3 = function(obj) { // manually delete each object property - works!
delete obj.firstName;
delete obj.lastName;
delete obj.getFullName;h
}
kill(person);
console.log(person);
kill2(person);
console.log(person);
kill3(person);
console.log(person);
Как видно, только вручную можно удалить каждое свойство объекта, но не обнулить весь объект разом. Цели у меня для этого нет, просто изучаю язык. Узнал, что можно вызывать функцию через другую функцию, но удивился, когда не смог обнулить объект.
Есть ли тут good practice решение?
PS: MDN читал:https://developer.mozilla.org/en-US/docs/Web/JavaS...

21 Авг 2019 в 07:05
250 +1
0
Ответы
1

Да, хорошей практикой в данном случае было бы использование метода Object.defineProperty() для перебора и удаления всех свойств объекта. Ниже приведен пример реализации функции, которая полностью очищает объект:

var clearObject = function(obj) {
Object.keys(obj).forEach(function(key) {
Object.defineProperty(obj, key, {
value: undefined,
configurable: true
});
});
};
clearObject(person);
console.log(person);

Этот метод перебирает все свойства объекта с помощью Object.keys(), затем устанавливает каждому свойству значение undefined и делает их конфигурируемыми. Таким образом, объект будет полностью обнулен.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир