Как удалить объект через функцию в 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...
Да, хорошей практикой в данном случае было бы использование метода Object.defineProperty() для перебора и удаления всех свойств объекта. Ниже приведен пример реализации функции, которая полностью очищает объект:
Этот метод перебирает все свойства объекта с помощью Object.keys(), затем устанавливает каждому свойству значение undefined и делает их конфигурируемыми. Таким образом, объект будет полностью обнулен.
Да, хорошей практикой в данном случае было бы использование метода 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 и делает их конфигурируемыми. Таким образом, объект будет полностью обнулен.