Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #29724

Re: Refer object within itself

From Stefan Weiss <krewecherl@gmail.com>
Newsgroups comp.lang.javascript
Subject Re: Refer object within itself
Date 2016-02-29 00:11 +0100
Organization albasani.net
Message-ID <navur6$448$1@news.albasani.net> (permalink)
References <76ydnVazm-uPoU3LnZ2dnUU7-TGdnZ2d@westnet.com.au> <dfd01b06-7ffd-44e6-94be-7ee2fdab0e18@googlegroups.com> <XnsA5BCEB469CEDBeejj99@194.109.6.166> <setter-20160228231357@ram.dialup.fu-berlin.de> <XnsA5BCEDE00D83Feejj99@194.109.6.166>

Show all headers | View raw


On 02/28/2016 23:23, Evertjan. wrote:
> ram@zedat.fu-berlin.de (Stefan Ram) wrote on 28 Feb 2016 in 
> comp.lang.javascript:
> 
>> "Evertjan." <exxjxw.hannivoort@inter.nl.net> writes:
>>> // Uncaught TypeError: Cannot set property height of #<Object> 
>>> // which has only a getter
>>
>>   Defining the setter was kindly left as an
>>   exercise for the reader by Ram Tobolski,
[...]
>>   so you might just give it a try!
> 
> Well, I just did, and being tested I found that it gives additional errors, 
> unforseen by the unwary, because it is not an equivalent to defining an 
> objects element,

I don't understand, what additional unforseen errors did you get?

Property getter/setter methods should work as advertised (where
supported) - does your object look like this?

  var foo = {
     "name":"bar",
     "width":600,
     get height () { return this.width * 2; },
     set height (h) { this.width = h / 2; },
  };

  foo.height;            // 1200
  foo.width;             // 600

  foo.height = 1000;
  foo.height;            // 1000
  foo.width;             // 500

> I think it is not a nice way to implement the problem at hand.

I'm late to this thread, but Ram Tobolski's suggestion is spot on, if
you have property values which are simply derived from other properties
of the same object. When something more complex is needed, I'd go with a
factory function or anonymous closure.


Regarding the example you posted earlier:

>> On 02/28/2016 23:07, Evertjan. wrote:
>>> and also not so nice, imho, is:
>>>
>>> var vvv;
>>> var foo = {
>>>    get height(){return vvv * 2;}
>>> };
>>> alert(foo.height) ; // NaN
>>> vvv = 20;
>>> alert(foo.height) ; // 40
>>> vvv = 7;
>>> alert(foo.height) ; // 14

Looks fine to me. It doesn't make a lot of sense in a rectangle example,
but if you let a property value depend on an unrelated variable (as
opposed to another property of the same object), that's what you get.


- stefan

Back to comp.lang.javascript | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Refer object within itself Andrew Poulos <ap_prog@hotmail.com> - 2016-02-26 22:50 +1100
  Re: Refer object within itself Scott Sauyet <scott.sauyet@gmail.com> - 2016-02-26 04:51 -0800
    Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-02-26 14:15 +0100
  Re: Refer object within itself "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-02-26 16:43 +0100
    Re: Refer object within itself Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-02-26 19:25 +0100
  Re: Refer object within itself Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-02-26 19:23 +0100
  Refer object within itself Ram Tobolski <ramtob@gmail.com> - 2016-02-28 10:06 -0800
    Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-02-28 23:07 +0100
      Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-02-28 23:23 +0100
        Re: Refer object within itself Stefan Weiss <krewecherl@gmail.com> - 2016-02-29 00:11 +0100
        Re: Refer object within itself Aleksandro <aleksandro@gmx.com> - 2016-02-29 14:49 -0300
          Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-02-29 19:49 +0100
            Re: Refer object within itself Aleksandro <aleksandro@gmx.com> - 2016-03-01 10:48 -0300
              Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-01 17:22 +0100
                Re: Refer object within itself Aleksandro <aleksandro@gmx.com> - 2016-03-01 15:07 -0300
                Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-01 20:26 +0100
                Re: Refer object within itself Aleksandro <aleksandro@gmx.com> - 2016-03-04 21:53 -0300
                Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-05 14:22 +0100
                Re: Refer object within itself Scott Sauyet <scott.sauyet@gmail.com> - 2016-03-05 10:17 -0800
                Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-06 11:59 +0100
                Re: Refer object within itself Ram Tobolski <ramtob@gmail.com> - 2016-03-06 10:48 -0800
                Re: Refer object within itself Scott Sauyet <scott.sauyet@gmail.com> - 2016-03-06 19:07 -0800
                Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-07 10:44 +0100
                Re: Refer object within itself Aleksandro <aleksandro@gmx.com> - 2016-03-07 12:54 -0300
                Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-07 17:59 +0100
                Re: Refer object within itself Scott Sauyet <scott.sauyet@gmail.com> - 2016-03-07 13:44 -0800
                Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-07 22:59 +0100
                Re: Refer object within itself Scott Sauyet <scott.sauyet@gmail.com> - 2016-03-07 17:00 -0800
                Re: Refer object within itself "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2016-03-08 10:24 +0100
                Re: Refer object within itself Scott Sauyet <scott.sauyet@gmail.com> - 2016-03-08 13:03 -0800

csiph-web