Ссылка на вложенное свойство sibling в литерале объекта
Я хочу сослаться на вложенное свойство в литерале объекта из другого свойства этого же литерала объекта.
Рассмотрим следующий надуманный пример:
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.
}
}
}
Вышеприведенное, очевидно, неверно, но как добраться до "цены" и "цены" было из "скидки"?
Я посмотрел на следующий вопрос, который близок, но в этом вопросе необходимое свойство является прямым потомком слова "this", что в приведенном выше примере не так. ссылочная переменная в литерале объекта?
Есть ли способ сделать это?
1 ответ
"...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()
от productN
объект.
So you wouldn't use this.product1.price
, because if you're calling discount
от productN
, затем this
будет ссылка на productN
,
Просто сделай это:
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
объект. If not, it would be helpful if you would show how discount
называется