Создание копии объекта даты
Всем доброго дня!Ниже приведенная функция возвращает число, которое было days дней назад от date, при этом исходный объект не должен меняться.Так вот функция работает, но мне не понятно, почему при создании копии объекта происходит копирование по значению, а не по ссылке?Ведь по сути в скобках мы указываем ссылку на объект: var dateCopy = new Date(date);
var date = new Date(); alert(getDateAgo(date, 1)); function getDateAgo(date, days) { var dateCopy = new Date(date); dateCopy.setDate(date.getDate() - days); return dateCopy.getDate(); } alert(date);// исходный объект не изменился! Объясните пожалуйста в чем я не прав!Спасибо! |
https://developer.mozilla.org/ru/doc...l_Objects/Date
Создаёт экземпляр объекта Date, представляющего собой момент времени. потом ты говоришь: Ведь по сути в скобках мы указываем ссылку на объект: var dateCopy = new Date(date); так новый объект var dateCopy = new Date(date); так ссылка var dateLink = date |
Получается при создании копии объекта происходит копирование по значению переменной date!?
|
AlexanderFilatov,
конструктор каждый раз создает создает новый экземпляр, поэтому var dateCopy = new Date(date); dateCopy !== date //true если нужна ссылка то так var dateCopy = date; |
j0hnik, спасибо я понял!
|
Цитата:
|
AlexanderFilatov,
да |
Цитата:
var car = { model: "focus" }; var carCopy = new Object(car); alert(car == carCopy); // true |
Конструктор Object создаёт объект-обёртку для переданного значения. Если значение уже является объектом, конструктор вернёт это значение.
в общем так делать не нужно, это бесполезное действие. |
Да уж, это никак не копия - это один и тот же объект
var car = { model: "focus" }; var carCopy = new Object(car); alert(carCopy.model); carCopy.model = "lexus"; alert(car.model); |
Часовой пояс GMT +3, время: 06:54. |