2012-04-01 3 views
0

Können sagen, ich habe ein Javascript-Objekt:Stellen Sie eine Objekteigenschaft auf den negativen Wert einer Immobilie im gleichen Objekt (Javascript/jQuery)

var myObj = { 
property1 : 20, 
property2 : -20 
} 

Aber statt -20 für property2, muss ich das nehmen Wert von property1 und wandelt es in seinem negativen innerhalb property2:

var myObj = { 
property1 : 20, 
property2 : this.property1 * -1 
} 

Dies funktioniert nicht, aber ich denke, es zeigt, was ich erreichen will.

+1

Ich bin mir nicht sicher, warum Sie das tun wollen. Mit -1 zu multiplizieren ist so einfach, und wenn Sie es inline tun, müssen Sie wahrscheinlich nicht einmal eine Überprüfung durchführen, um sicherzustellen, dass die Eigenschaft, die Sie multiplizieren möchten, derselbe Datentyp ist. Nun, ich nehme das zurück. Es sei denn, es ist ein triviales bisschen Scripting, das sollten Sie trotzdem tun, denn wie können Sie sicher sein, dass der Wert von 'property1' nicht in NaN geändert wurde? – Robusto

+0

Ich denke, die allgemeinere Frage ist, ob innerhalb eines Objektliterals der Wert einer Eigenschaft ein Ausdruck sein kann, der eine oder mehrere andere Eigenschaften desselben inkrementellen Objekts beinhaltet. – Pointy

+2

(Die Antwort ist übrigens "Nein".) – Pointy

Antwort

1

Ich könnte Ihnen folgendes vorschlagen

var myObj = { 
    property1 : 20, 
    get_property2 : function() { 
     return this.property1 * -1; 
    }, 
    set_property2 : function(value) { 
     this.property1 = value * -1; 
    } 
} 

bearbeiten

Es scheint, dass dies eine abhängige Eigenschaft ist, so dass es nur lesbar ist. Aber ich habe den Code so bearbeitet, dass er auch beschreibbar ist.

2

Sie können das nicht tun. Sie können es später zuordnen, aber:

var myObj = { 
    property1: 20 
}; 

myObj.property2 = -myObj.property1; 
0

Sie diese verwenden können:

var myObj = { 
    property1 : 20, 
    get property2() { return this.property1 * -1; } 
}; 

Aber man kann nur lesen property2 Eigenschaft.

Definieren von Setter von property2 wird kein Problem sein. Siehe JavaScript Getters and Setters Link.

Verwandte Themen