Я только начинаю думать об этой объектно-ориентированной вещи, так что терпите меня.
Итак, я видел пример функции объекта (для Javascript), где вы присваиваете новое значение, и это значение присваивается в качестве фактического значения этого свойства. Пример:
function Meat (name, color, price) {
function newPrice (new_price) {
this.price = new_price;
}
this.name = name;
this.color = color;
this.price = price;
this.newprice = newPrice;
}
Прекрасно и модно. Теперь у меня есть возможность назначить цену, используя Bacon.price или Bacon.newprice. Лично это кажется высшим порядком семантики, поскольку функционально это делает то же самое. Но как сторонник семантического кодирования, я позволю этому скользить. Вот что я хочу:
Когда я изменяю значение Bacon.price, объект должен включать функцию для автоматического сохранения старого значения в свойстве с именем oldprice. Я играл с этим, но ничего не получилось. Вот что я пробовал до сих пор:
function Meat (name, color, price) {
function oldPrice () {
this.oldprice = this.price;
}
this.name = name;
this.color = color;
this.oldprice = oldPrice;
this.price = price;
}
///////////////////////
function Meat (name, color, price) {
this.name = name;
this.color = color;
this.oldprice = this.price;
this.price = price;
}
Более или менее вариации этого. Я думал, что обращения к уже назначенному значению (которое было бы ничем в первый раз) до назначения нового значения будет достаточно. Я знаю, что значение (или его отсутствие) хранится где-то до того, как оно будет присвоено, я просто не знаю, как ссылаться на него, чтобы присвоить его свойству oldvalue, прежде чем оно будет уничтожено.
Хорошо, может проблема в моих глазах или пальцах? Потому что я думал, что попробовал предложения перед тем, как спросить (я знаю, я не упомянул их!) Если только я не запутался, это должно сработать:
function Meat(price)
{
function setPrice(price)
{
this.oldprice = this.price;
this.price = price;
}
this.price=setPrice;
}
bacon = new Meat()
bacon.price = "Expensive";
document.write(bacon.price+"<br />");
document.write(bacon.oldprice+"<br />");
bacon.price = "Cheap";
document.write(bacon.price+"<br />");
document.write(bacon.oldprice+"<br />");
Но вывод, который я получаю:
Дорого
не определено
дешево
не определен
Все хорошо до последнего. Снова, я готов принять плохое зрение и плохое правописание как корень. Но я не могу понять это.