I want to reference a nested property in an object literal from within another property in that same object literal.
Consider 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?
Actually, it probably is if you’re calling
.discount()from theproductNobject.So you wouldn’t use
this.product1.price, because if you’re callingdiscountfromproductN, thenthiswill be a reference toproductN.Just do this:
…so it would look like:
Again, this assumes you’re calling the function from the
productNobject. If not, it would be helpful if you would show howdiscountis being called.