Как клонировать объект в JavaScript?

Недавно разобрался как присваивать ссылки другим объектам, сейчас пытаюсь освоить клонирование элементов, именно что бы были разные элементы и разные ячейки памяти, подскажите как можно сделать точную копию объекта а затем заменить некоторые свойства?

Тут всё очень просто, объясню на примере:

var teacher = {
name: "Drake",
subject:"Math",
class_room:"16"
};

var
clone_teacher = {};

for
(var key in teacher) {
clone_teacher[key] = teacher[key]
;
}

clone_teacher.
name ="Lidiya";
clone_teacher.subject = "Biology";
clone_teacher.class_room="15"


alert( clone_teacher.name );
alert( clone_teacher.subject );
alert( clone_teacher.class_room );

alert( teacher.name );
alert( teacher.subject );
alert( teacher.class_room );

Суть такова, мы создаем объект учитель, с тремя свойствами, далее создаем пустой объект, и с помощью конструкции for(var key in teacher) перебираем все свойства учителя и передаем их клону, далее просто обращаемся к полям через клона и меняем значения, если запустить пример в браузере то будет видно что сначала у нас выводится наш новый учитель (клон с измененными свойствами), а затем исходник, с которого копировали)

Можешь глянуть видео уроки на itvdn, там очень хорошо и структурно рассказывают о языке и его особенностях, так же целый урок уделен массивам, вот ссылка - https://itvdn.com/ru/video/javascript-essential