Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 1 год назад.
var vasya = {
age: 21,
name: 'Вася',
surname: 'Петров'
};
var user = {
isAdmin: false,
isEmailConfirmed: true
};
function copy() {
// объявляем переменную dst и присваиваем нулевой объект из arguments
var dst = arguments[0];
// начиная с первого объекта перечисляем в цикле
for (var i = 1; i < arguments.length; i++) {
// объявляем переменную arg и присваиваем объект из arguments
var arg = arguments[i];
// в цикле перебиваем свойства объектов
for (var key in arg) {
// тут я не могу понять dst[key] = arg[key]; по идеи в переменную dst[key] присваивается свойства arg[key]
// только arg[key] обозначает значение свойства, т.е. если переменная обозначеает arg ==
// user получим false и т. д. а как же тогда ключи т.е. isAdmin и т.д. ?
dst[key] = arg[key];
}
}
return dst;
}
console.log(copy(vasya, user))
var vasya = {
age: 21,
name: 'Вася',
surname: 'Петров'
};
for(var key in vasya){
console.log(key + ' ' + vasya[key])
};
var vasya = {
age: 21,
name: 'Вася',
surname: 'Петров'
};
var user = {
isAdmin: false,
isEmailConfirmed: true
};
function copy() {
// объявляем переменную dst и присваиваем нулевой объект из arguments
var dst = arguments[0];
// начиная с первого объекта перечисляем в цикле
for (var i = 1; i < arguments.length; i++) {
// объявляем переменную arg и присваиваем объект из arguments
var arg = arguments[i];
// В цикле из объекта 'arg' "копируем" свойства и их значения в объект 'dst'
for (var key in arg) {
/*
Если в объекте 'dst' нету свойста 'key' это свойство присваивается объекту
'dst', после чего свойству 'key' в объекте 'dst' присваивается значение
свойства 'key' объекта 'arg'
*/
// Вот как это выглядит на первой итерации: vasya['isAdmin'] = user['isAdmin'];
dst[key] = arg[key];
/* После первой итерации объект 'vasya' будет равен vasya = {
age: 21,
name: 'Вася',
surname: 'Петров',
isAdmin: false,
}
*/
}
}
return dst;
}
console.log(copy(vasya, user))
Кстати в нашем случае можно и без цикла:
for (var i = 1; i < arguments.length; i++)
Идентичный код без цикла:
var vasya = {
age: 21,
name: 'Вася',
surname: 'Петров'
};
var user = {
isAdmin: false,
isEmailConfirmed: true
};
function copy() {
var dst = arguments[0];
var arg = arguments[1];
for (var key in arg) {
dst[key] = arg[key];
}
return dst;
}
console.log(copy(vasya, user))
Продвижение своими сайтами как стратегия роста и независимости