Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > dynamic variables

Reply
Thread Tools

dynamic variables

 
 
J.P.
Guest
Posts: n/a
 
      05-06-2005
Hi,

I need to create a variable out of nothing. From a database I extract an
item with a certain id. With this id I want to create a new variable.
For example:

id = 36;

"item"+id = new Array();

Now I get the message "Illegal left hand assignment".

I tried:

eval("item"+id) = new Array();

Is it possible to create a variable out of nothing?

---

J.P.
 
Reply With Quote
 
 
 
 
Lee
Guest
Posts: n/a
 
      05-06-2005
J.P. said:
>
>Hi,
>
>I need to create a variable out of nothing. From a database I extract an
>item with a certain id. With this id I want to create a new variable.
>For example:
>
>id = 36;
>
>"item"+id = new Array();
>
>Now I get the message "Illegal left hand assignment".
>
>I tried:
>
>eval("item"+id) = new Array();
>
>Is it possible to create a variable out of nothing?


var dynamic = new Object();
dynamic["item"+id] = new Array();
dynamic["item"+id][0] = "somevalue";

 
Reply With Quote
 
 
 
 
Michael Winter
Guest
Posts: n/a
 
      05-06-2005
On 06/05/2005 21:05, J.P. wrote:

> I need to create a variable out of nothing. From a database I extract an
> item with a certain id. With this id I want to create a new variable.
> For example:
>
> id = 36;
>
> "item"+id = new Array();


[snip]

There are two options that immediately spring to mind. They're basically
the same, but I prefer the latter.

1) Create these variables on the global object:

/* In global scope: */
var global = this;

/* ... */

/* In any scope: */
global['item' + id] = []; /* Create new array */

which can also be written:

window['item' + id] = [];

2) Create an object that will do the same thing as the global
object, above:

var items = {}; /* Create an object, items
* {} is an object literal,
* equivalent to new Object()
*/

/* ... */

items[id] = []; // Create new array


The notation, identifier[...], has nothing to do with arrays in this
situation. Square bracket notation, as it is known, is effectively the
same as regular dot notation used to access object members, except that
it allows the use of expressions to compose the property name. See the
relevant FAQ notes article[1] for more information.

Hope that helps,
Mike


[1] <URL:http://www.jibbering.com/faq/faq_notes/square_brackets.html>

--
Michael Winter
Replace ".invalid" with ".uk" to reply by e-mail.
 
Reply With Quote
 
J.P.
Guest
Posts: n/a
 
      05-06-2005
Michael Winter schreef:
<remove>

> 2) Create an object that will do the same thing as the global
> object, above:
>
> var items = {}; /* Create an object, items
> * {} is an object literal,
> * equivalent to new Object()
> */
>
> /* ... */
>
> items[id] = []; // Create new array
>
>
> The notation, identifier[...], has nothing to do with arrays in this
> situation. Square bracket notation, as it is known, is effectively the
> same as regular dot notation used to access object members, except that
> it allows the use of expressions to compose the property name. See the
> relevant FAQ notes article[1] for more information.
>
> Hope that helps,
> Mike
>
>
> [1] <URL:http://www.jibbering.com/faq/faq_notes/square_brackets.html>
>


Yes, that really helps. Thanks a lot!! My code is readable again!

--

J.P.
 
Reply With Quote
 
RobG
Guest
Posts: n/a
 
      05-07-2005
J.P. wrote:
> Michael Winter schreef:
> <remove>
>
>> 2) Create an object that will do the same thing as the global
>> object, above:
>>
>> var items = {}; /* Create an object, items
>> * {} is an object literal,
>> * equivalent to new Object()
>> */
>>
>> /* ... */
>>
>> items[id] = []; // Create new array
>>
>>
>> The notation, identifier[...], has nothing to do with arrays in this
>> situation. Square bracket notation, as it is known, is effectively the
>> same as regular dot notation used to access object members, except
>> that it allows the use of expressions to compose the property name.
>> See the relevant FAQ notes article[1] for more information.
>>
>> Hope that helps,
>> Mike
>>
>>
>> [1] <URL:http://www.jibbering.com/faq/faq_notes/square_brackets.html>
>>

>
> Yes, that really helps. Thanks a lot!! My code is readable again!
>


To pre-empt your next question "How do I see what's in the object?"

Here's how:

var item = {}
item[0] = 'foo';
item[1] = ['bar','buzz'];

var msg='Properties of object item:\n';
for ( prop in item) {
msg += '\n' + prop + ' has value ' + item[prop];
}

alert(msg);

Another interesting feature is that you can add methods to your
object. So you could add a method that shows what's in the object:

item.showContent = function() {
var msg=[];
for ( prop in item) {
if ( 'function' != typeof item[prop]) {
msg.push(prop + ' : ' + item[prop]);
}
}
alert(msg.join('\n'));
}

The 'typeof' test stops the method being printed out, comment it out
to see everything. To see what's in the object, call the method:

item.showContent();

--
Rob
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Put variables into member variables or function variables? tjumail@gmail.com C++ 9 03-23-2008 04:03 PM
Session Variables and Static Variables cobus.lombard@gmail.com ASP .Net 1 03-26-2006 11:05 AM
Accessing class member variables - properties or variables? dwok Java 7 03-04-2005 03:54 AM
Dynamic Variables? OR Dynamic Controls =?Utf-8?B?VGVyb3M=?= ASP .Net 1 08-10-2004 01:13 PM
Re: Class public shared Variables vs. Application Variables in ASP.NET avnrao ASP .Net 0 05-07-2004 05:28 AM



Advertisments