在对象文字中引用嵌套的'sibling'属性

时间:2011-09-13 21:17:55

标签: javascript object-literal

我想在同一个对象文字中的另一个属性中引用对象文字中的嵌套属性。

考虑以下设想的例子:

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?

有什么办法吗?

1 个答案:

答案 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的调用方式会很有帮助。