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


Groups > comp.lang.javascript > #20126

Re: No existing object

Path csiph.com!usenet.pasdenom.info!gegeweb.org!newsfeed.kamp.net!newsfeed.kamp.net!newsfeed.arcor.de!newsspool2.arcor-online.net!news.arcor.de.POSTED!not-for-mail
Content-Type text/plain; charset="UTF-8"
Message-ID <1758819.r8tGRauTii@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Reply-To Thomas 'PointedEars' Lahn <usenet@PointedEars.de>
Organization PointedEars Software (PES)
Date Mon, 03 Jun 2013 15:04:19 +0200
User-Agent KNode/4.10.2
Content-Transfer-Encoding 8Bit
X-Face %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&.<b';Md8`dH6iqhT)6C^.Px|[=M@7=Ik[_w<%n1Up"LPQNu2m8|L!/3iby{-]A+#YE}Kl{Cw$\U!kD%K}\2jz"QQP6Uqr],./"?;=4v
Face iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg==
Subject Re: No existing object
Newsgroups comp.lang.javascript
References <L4SdnQc8Q-MTWzbMnZ2dnUVZ_uWdnZ2d@westnet.com.au> <2326659.jpX2h7uNEo@PointedEars.de> <daae1899-e02d-4924-b6f8-1dffe640ac6c@z8g2000yqd.googlegroups.com>
Supersedes <1649231.49LeFy0W6R@PointedEars.de>
MIME-Version 1.0
Lines 84
NNTP-Posting-Date 03 Jun 2013 15:04:20 CEST
NNTP-Posting-Host 0582bf94.newsspool4.arcor-online.net
X-Trace DXC=OiNSOa34f>5lIh70@<QIE74IUK<Cl32<14Fo<]lROoR18kF<OcfhCO;0bK78=TXjm>DZm8W4\YJN<b@mF9jNikd5BoKGPB=12A7eDTk3LH7hP4
X-Complaints-To usenet-abuse@arcor.de
Xref csiph.com comp.lang.javascript:20126

Show key headers only | View raw


Scott Sauyet wrote:

> Thomas 'PointedEars' Lahn wrote:
>> [... Code samples elided ...]

.o(…)
 
> This version of the code seems simpler to me:
> 
>     var Foo = (function() {
>       var counter = 0;
> 
>       var Foo = function(el) {
>         this.elem = ...
>         ++counter;
>       };
> 
>       Foo.prototype.destroy = function() {
>         --counter;
>         if (counter <= 0) {
>           /* all done */
>         }
>       };
> 
>       return Foo;
>     }());

I would not use the same unqualified “Foo” identifier in different contexts, 
but otherwise ACK.  More important than simplicity is that this way 
“counter” cannot be increased other than by calling the constructor.

JFTR, JSX's Function.prototype.extend() can also be used then:

  var Foo = (function() {
    var _counter = 0;

    var _Foo = function(el) {
      this.elem = ...
      ++_counter;
    };

    _Foo.extend(null, {
      destroy: function() {
        --_counter;
        if (_counter <= 0) {
          /* all done */
        }
      }
    });

    return _Foo;
  }());

or

  var Foo = (function() {
    var _counter = 0;

    var _Foo = (function(el) {
      this.elem = ...
      ++_counter;
    }).extend(null, {
      destroy: function() {
        --_counter;
        if (_counter <= 0) {
          /* all done */
        }
      }
    });

    return _Foo;
  }());

JSX's Function.prototype.extend() is useful if you want to define several 
methods on a prototype object, because you DRY.  It also provides special 
properties and methods on the constructors and prototype objects thus 
extended.  (The underscores for private symbols are optional, but I consider 
that good style.)

-- 
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

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


Thread

No existing object Andrew Poulos <ap_prog@hotmail.com> - 2013-06-03 08:26 +1000
  Re: No existing object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-06-03 01:24 +0200
    Re: No existing object Scott Sauyet <scott.sauyet@gmail.com> - 2013-06-03 05:45 -0700
      Re: No existing object Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2013-06-03 15:04 +0200
        Re: No existing object Scott Sauyet <scott.sauyet@gmail.com> - 2013-06-03 10:04 -0700
  Re: No existing object John Harris <niam@jghnorth.org.uk.invalid> - 2013-06-03 14:30 +0100
    Re: No existing object Andrew Poulos <ap_prog@hotmail.com> - 2013-06-04 08:05 +1000
      Re: No existing object John Harris <niam@jghnorth.org.uk.invalid> - 2013-06-04 10:57 +0100

csiph-web