Точечная нотация против Скобочная нотация

#object #brackets

#объект #скобки

Вопрос:

Почему точечная нотация не удаляет ключ с помощью javascript, а скобочная нотация удаляет?

     function removeProperty(obj, key) {
      // your code here
    delete obj.key;
        
     }
    
    var obj = {
      name: 'Sam',
      age: 20
    }
    console.log(obj.name);
    removeProperty(obj, 'name');
    console.log(obj.name); // --> undefined  

Ответ №1:

Вопрос, честно говоря, немного неясен, но я постараюсь ответить на него, исходя из моего понимания

Чтобы удалить ключ из объекта, мы делаем что-то вроде этого

   var obj = {
      name: 'Sam',
      age: 20
    }


delete obj.name 

console.log(obj) // won't have name  

Теперь в вашей функции,

    function removeProperty(obj, key) {
      // your code here
    delete obj.key;
        
     }
  

Вы пытаетесь удалить свойство key из obj, которое не существует.

Правильный способ был бы

    function removeProperty(obj, key) {
      // your code here
    delete obj[key]
  
     }
  

Итак, правильный способ удаления внутри функции в случае вашего фрагмента кода будет

 function removeProperty(obj, key) {
      // your code here
    delete obj[key];
        
     }
    
    var obj = {
      name: 'Sam',
      age: 20
    }
    console.log(obj.name);
    removeProperty(obj, 'name');
    console.log(obj.name); // --> undefined