Скажите правильно я понял функцию copy

128
29 ноября 2019, 22:20

var vasya = { 
  age: 21, 
  name: 'Вася', 
  surname: 'Петров' 
}; 
 
var user = { 
  isAdmin: false, 
  isEmailConfirmed: true 
}; 
 
var student = { 
  university: 'My university' 
}; 
 
function copy() { 
  var dst = arguments[0]; 
 
  for (var i = 1; i < arguments.length; i++) { 
    var arg = arguments[i]; 
    for (var key in arg) { 
      dst[key] = arg[key]; 
    } 
  } 
 
} 
 
console.log(copy(vasya, user, student));

  1. Внутри функции copy объявляем переменную dst которой присваиваем первый параметр (объект)
  2. В функции все данные хранятся в специальном объекте который называют псевдомассив или коллекцией
  3. Создаем цикл такая запись показывает длину псевдомассива arguments.length
  4. Длина псевдомассива arguments.length больше 1 идем в тело цикла
  5. Объявляем переменную arg которой присваиваем значение псевдомассива (это будет объект user )
  6. Создаем цикл в которой операцией in перебираем объект
  7. В переменную key присваивается ключ объекта
  8. В переменную arg которая получила ссылку на vasya благодаря arguments[1]
  9. А что дальше происходит ? Ведь arg[key] означает значение объекта
  10. Получается dst[key] тоже получает значение ?
Answer 1

Получается dst[key] тоже получает значение ?

да, получает

В js есть гораздо более прогрессивные способы копировать объекты

Object.assign() https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

Spread оператор https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Spread_syntax

Answer 2

Ну вы добавьте return dst в copy,

увидите что она добавляет в первый объект значения из второго и третьего

var vasya = { 
  age: 21, 
  name: 'Вася', 
  surname: 'Петров' 
}; 
 
var user = { 
  isAdmin: false, 
  isEmailConfirmed: true 
}; 
 
var student = { 
  university: 'My university' 
}; 
 
function copy() { 
  var dst = arguments[0]; 
 
  for (var i = 1; i < arguments.length; i++) { 
    var arg = arguments[i]; 
    for (var key in arg) { 
      dst[key] = arg[key]; 
    } 
  } 
   return dst 
} 
 
console.log(copy(vasya, user, student));

{
    "age": 21,
    "name": "Вася",
    "surname": "Петров",
    "isAdmin": false,
    "isEmailConfirmed": true,
    "university": "My university"
}
READ ALSO
Как получить response, используя $.postJson()

Как получить response, используя $.postJson()

Задача состоит в получении ответа, используя IJavaScriptExecutor и метод $postJson() Реализация следующая

131
Как скачать файл из полученной ссылки response?

Как скачать файл из полученной ссылки response?

С фронтенда (React) отправляю fetch-запрос на сервер для скачивания определённого файлаВ этой же функции получаю response со статусом 200

117
При клике передать заголовок в инпут

При клике передать заголовок в инпут

Есть скрипт который передает при клике заголовок ссылки в инпут

138
Подключения javascript plugina MarkitUp

Подключения javascript plugina MarkitUp

Пишу проект на симфони 4 и не могу подключить Plugin Javascript MarkitupEditor в других проектах пробывал и подключеться с лекгостьюДело в том что использываю...

114