开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜