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


Groups > comp.lang.javascript > #23563

Re: arr.push(obj);

Message-ID <1987234.4suMY2Rx6P@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Organization PointedEars Software (PES)
Date 2014-03-12 04:08 +0100
Subject Re: arr.push(obj);
Newsgroups comp.lang.javascript
References (5 earlier) <531f2b05$0$6660$9b4e6d93@newsspool2.arcor-online.net> <60636642.clnVRmuXiz@PointedEars.de> <531f52ab$0$6670$9b4e6d93@newsspool2.arcor-online.net> <1406720.0V7e0g0dhT@PointedEars.de> <531fa3de$0$6656$9b4e6d93@newsspool2.arcor-online.net>

Show all headers | View raw


Christoph Michael Becker wrote:

> Thomas 'PointedEars' Lahn wrote:
>> Christoph Michael Becker wrote: 
>>> Thomas 'PointedEars' Lahn wrote:
>>>> Christoph Michael Becker wrote:
>>>>> I suggest to use ECMAScript Arrays the way they're meant to be used,
>>>>> and use indexes from 0 to n, and scale them as appropriate.
>>>>
>>>> As long as the “length” property is not used directly, it can be useful
>>>> to have an *Array* instance with user-defined properties whose names
>>>> are string representations of negative numbers, positive numbers
>>>> greater than 2³² − 1, and non-integers.
>>>
>>> While you're surely right that having "non negative" properties *can* be
>>> useful sometimes, it might often be confusing (particularly for
>>> beginners).
>> 
>> Non sequitur.  I expect people to use their brain while programming, IOW
>> not to treat those special arrays as if they were ordinary arrays.
>> 
>>> Not only the length property will not work as "expected",
>> 
>> Depends on the implementation.  You are forgetting getters.
> 
> -v, please.

,----[JSX/array.js:278]
| 
|       /**
|        * @memberOf __jsx.array.BigArray
|        * @private
|        */
|       var _length = 0;
|     
|       /**
|        * Sets the real length of this array
|        *
|        * @param {int} value
|        * @throws jsx.array.RangeError
|        *   if the value is less than <code>0</code> or
|        *   greater than {@link BigArray.MAX_LENGTH}
|        */
|       this.setLength = function BigArray_setLength (value) {
|         if (value < 0 || value > _BigArray.MAX_LENGTH)
|         {
|           return _jsx.throwThis(_RangeError,
|             ["Invalid length", value,
|              "0.." + _BigArray.MAX_LENGTH
|              + " (2^" + Math.floor(Math.log(_BigArray.MAX_LENGTH)
|                           / Math.log(2)) + ")"],
|             BigArray_setLength);
|         }
| 
|         _length = Math.floor(value);
| 
|         return this;
|       };
| 
|       /**
|        * Returns the real length of this array
|        *
|        * @return {int}
|        */
|       this.getLength = function () {
|         return _length;
|       };
| 
|       /**
|        * @memberOf jsx.array.BigArray
|        * @name length
|        */
|       _defineProperty(this, "length", {
|         "get": this.getLength,
|         "set": this.setLength
|       }, "jsx.array.BigArray");
| 
`----

_defineProperty() is just an import of jsx.object.defineProperty() in 
JSX:object.js which in turn is a wrapper for Object.defineProperty() [ES5.x, 
15.2.3.6] or the proprietary ways of defining setters and getters if the 
former is unavailable.

>> But now I am thinking of a property defining whether you can have
>> negative indexes on the object, modifying that behavior slightly.
>> FWIW, the “length” property could then yield the difference between the
>> maximum positive and the minimum negative index or just the maximum
>> positive index + 1 as it always had;
> 
> How about having new properties or methods, say lbound and ubound.
> These would be useful for iterating over the elements with for loops.

Yes, much better.
 
>>              how did you get the idea that “for” loops would stop working
>>              for
>> those objects *per se*?
> 
> I have not got this idea.  I've written:
> 
> | Element access via the bracket notation as well as for loops will
> | work on such "arrays".

Sorry, I misread.

-- 
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

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


Thread

arr.push(obj); jonas.thornvall@gmail.com - 2014-03-10 17:38 -0700
  Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-10 20:19 -0700
    Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-10 20:28 -0700
      Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-10 21:19 -0700
        Re: arr.push(obj); Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-03-11 06:59 -0300
          Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-11 16:02 +0100
            Re: arr.push(obj); Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-03-11 16:22 +0000
            Re: arr.push(obj); Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-03-11 13:32 -0300
  Re: arr.push(obj); "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-03-11 10:21 +0100
    Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 03:53 -0700
      Re: arr.push(obj); "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-03-11 14:03 +0100
        Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 07:45 -0700
          Re: arr.push(obj); "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-03-11 16:24 +0100
            Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 10:40 -0700
              Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 10:51 -0700
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-11 19:23 +0100
                Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 15:33 -0700
                Re: arr.push(obj); "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-03-12 00:37 +0100
                Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 16:46 -0700
                Re: arr.push(obj); "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-03-12 01:05 +0100
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 01:40 +0100
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 00:48 +0100
                Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 15:43 -0700
                Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 16:18 -0700
                Re: arr.push(obj); "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-03-12 00:39 +0100
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 00:52 +0100
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 00:49 +0100
                Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 17:16 -0700
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 02:07 +0100
                Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 18:13 -0700
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-13 02:25 +0100
                Re: arr.push(obj); Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-03-13 11:03 +0100
                Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-12 07:46 -0700
                Re: arr.push(obj); Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-03-12 01:27 +0100
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 01:44 +0100
          Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-11 16:26 +0100
            Re: arr.push(obj); Carlos Pedro <carlospedr@gmail.com> - 2014-03-11 09:21 -0700
            Re: arr.push(obj); Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-03-11 18:01 +0100
              Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-11 19:15 +0100
                Re: arr.push(obj); Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-03-11 20:32 +0100
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 01:01 +0100
                Re: arr.push(obj); Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-03-12 04:08 +0100
                Re: arr.push(obj); Christoph Michael Becker <cmbecker69@arcor.de> - 2014-03-12 18:00 +0100
  Re: arr.push(obj); Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-03-11 06:24 -0300
    Re: arr.push(obj); jonas.thornvall@gmail.com - 2014-03-11 03:47 -0700
      Re: arr.push(obj); Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-03-11 15:19 +0000

csiph-web