【发布时间】:2010-10-12 07:09:21
【问题描述】:
我刚刚开始思考整个面向对象的事情,所以请耐心等待。
所以,我看到了一个对象函数(用于 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 />");
但我得到的输出是: 昂贵的 不明确的 便宜的 未定义
一切都好,直到最后一个。再一次,我愿意接受视力不好和拼写不好的根源。但我想不通。
【问题讨论】:
标签: javascript variables object oop