Reference nested 'sibling'-property in object literal
I want to reference a nested property in an object literal from within another property in that same object literal.
Cons开发者_如何学编程ider the following contrived example:
var obj = {
product1: {
price: 80,
price_was: 100,
discount: function(){
return 100 - (100 * (price/price_was));
//I don't want to use:
//100 - (100 * (this.product1.price/this.product1.price_was))
//because the name of the parent ('product1' in this case) isn't known
//a-priori.
}
}
}
The above is obviously incorrect, but how to get to 'price' and 'price_was' from within 'discount'?
I've looked at the following question, which is close, but in that question the needed property is a direct child of 'this', which in the above example isn't the case. reference variable in object literal?
Any way to do this?
"...in that question the needed property is a direct child of 'this', which in the above example isn't the case"
Actually, it probably is if you're calling .discount()
from the productN
object.
So you wouldn't use this.product1.price
, because if you're calling discount
from productN
, then this
will be a reference to productN
.
Just do this:
this.price;
this.price_was;
...so it would look like:
var obj = {
product1: {
price: 80,
price_was: 100,
discount: function(){
return 100 - (100 * (this.price/this.price_was));
}
}
};
Again, this assumes you're calling the function from the productN
object. If not, it would be helpful if you would show how discount
is being called.
精彩评论