Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #23563
| 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> |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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