我想在同一个对象文字中的另一个属性中引用对象文字中的嵌套属性。
考虑以下设想的例子:
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.
}
}
}
以上显然是不正确的,但如何从'折扣'中获得'价格'和'price_was'?
我看了下面的问题,这个问题很接近,但在那个问题中,所需属性是'this'的直接子项,在上面的例子中并非如此。 reference variable in object literal?
有什么办法吗?
答案 0 :(得分:3)
“...在那个问题中,所需属性是'this'的直接子项,在上面的示例中并非如此”
实际上,如果您从.discount()
对象调用productN
,可能就是这样。
因此,您不会使用this.product1.price
,因为如果您从discount
致电productN
,则this
将成为productN
的引用。
这样做:
this.price;
this.price_was;
...所以它看起来像:
var obj = {
product1: {
price: 80,
price_was: 100,
discount: function(){
return 100 - (100 * (this.price/this.price_was));
}
}
};
同样,这假设您正在从productN
对象调用该函数。如果没有,如果您要显示 discount
的调用方式会很有帮助。