Objekt-Eigenschaft "Vorherigen Wert" in Javascript

Ich bin gerade erst anfangen, um meinen Geist um das ganze Objekt-Orientierte Sache, so mit mir tragen.

So, ich sah ein Beispiel für eine Objekt-Funktion (für Javascript), wo Sie einen neuen Wert zuweisen und diesen Wert zugewiesen bekommt, als dass das Eigentum den tatsächlichen Wert. Beispiel:

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;
 }

Fein und dandy. Jetzt habe ich die Möglichkeit, weisen Sie einen Preis durch die Verwendung von Speck.Preis oder Speck.newprice. Persönlich scheint dies der höchste Orden der Semantik, funktional, da es nicht die gleiche Sache. Aber als Anwalt für die semantische Codierung, ich werde lassen Sie es schieben. Hier ist, was ich will:

Wenn ich ändern Sie den Wert von Speck.Preis, das Objekt sollte eine Funktion zum speichern der alten Wert in eine Eigenschaft namens " oldprice automatisch. Ich spielte mit dieser, bekam aber nirgendwo. Hier ist, was ich bisher ausprobiert habe:

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;
}

Mehr oder weniger Variationen des. Ich dachte, dass bezogen auf die bereits zugewiesenen Wert (das wäre nichts das erste mal), bevor der neue Wert zugewiesen bekam genug sein würde. Ich weiß, dass der Wert (oder der Mangel davon) ist irgendwo gespeichert, bevor es zugewiesen bekommt, ich weiß nur nicht, wie finden Sie es, ordnen Sie es mit der oldvalue-Eigenschaft, bevor es ausgelöscht.


Okay, vielleicht ist das problem mit meinen Augen oder mit den Fingern dann. Weil ich dachte, ich hatte versucht die Anregungen, die bevor Sie Fragen (ich weiß, ich wollte nicht schweigen Sie!) Es sei denn, ich bin echt verwirrt, sollte dies funktionieren:

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 />");

Aber die Ausgabe die ich bekomme ist:
Teuer
undefined
Billig
undefined

Alles okay bis auf das Letzte. Wieder bin ich bereit zu akzeptieren, ein schlechtes Sehvermögen und schlechte Rechtschreibung als root. Aber ich kann ' T es herausfinden.

InformationsquelleAutor Anthony | 2009-03-09
Schreibe einen Kommentar