Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > Static variable in Javascript?

Reply
Thread Tools

Static variable in Javascript?

 
 
seans
Guest
Posts: n/a
 
      08-17-2005
Hi,

Is there a way to create a static variable in Javascript? I want to use
a recursive function to traverse a DOM tree and examine each node. If
the node is a text object I would like to save the text to a string or
array. Is it possible to create an array or string variable to do this?

Any advice would be greatly appreciated. Thanks again.

sean

 
Reply With Quote
 
 
 
 
VK
Guest
Posts: n/a
 
      08-17-2005

seans wrote:
> Hi,
>
> Is there a way to create a static variable in Javascript? I want to use
> a recursive function to traverse a DOM tree and examine each node. If
> the node is a text object I would like to save the text to a string or
> array. Is it possible to create an array or string variable to do this?
>
> Any advice would be greatly appreciated. Thanks again.
>
> sean


Static means shared by all object instances (other words it's a
constant in the constructor referred by all created objects). ECMA
variant of JavaScript doesn't have (yet?) neither constant nor static
types but it can be more-or-less successfully emulated. Is it what
you're looking for? Because from your task description the necessity of
this type is not evident. You rather need a global array (?)

 
Reply With Quote
 
 
 
 
Michael Winter
Guest
Posts: n/a
 
      08-17-2005
On 17/08/2005 11:37, VK wrote:

[snip]

> Static means shared by all object instances


Unless the OP is referring to function-oriented statics. The only
reference the OP makes to objects is with regard to text nodes.

> (other words it's a constant in the constructor referred by all
> created objects).


A static in no way implies a constant value. Static members can be
constant, but they don't have to be.

> ECMA variant of JavaScript doesn't have (yet?) neither constant nor
> static types but it can be more-or-less successfully emulated.


To clarify, constants are not available in ECMAScript. However, both
private and public static members can be implemented. The former uses a
closure outside the constructor function. The latter is provided simply
by adding properties to the constructor function.

var MyObject = (function() {
/* Declare private static variables here */

function constructor() {
/* ... */
}
constructor.myStatic = 'myValue';

return constructor;
})();

MyObject.myStatic // 'myValue'

[snip]

Mike

--
Michael Winter
Prefix subject with [News] before replying by e-mail.
 
Reply With Quote
 
Martin Honnen
Guest
Posts: n/a
 
      08-17-2005


seans wrote:

> Is there a way to create a static variable in Javascript? I want to use
> a recursive function to traverse a DOM tree and examine each node. If
> the node is a text object I would like to save the text to a string or
> array. Is it possible to create an array or string variable to do this?


The term "static variable" has probably different meanings depending on
whom you ask or which existing programming language you have in mind.
As for that recursive function, can't you simply return the text as
needed or pass the text string (or array if needed) around with each
function call?
Imagine you wanted to concatenate the text node value of all descendants
of a node then you could do that alike (pseudo code not meant to be a
complete implementation covering all node types)
function getInnerText (node) {
if (node.nodeType == 3) {
return node.nodeValue;
}
else if (node.nodeType == 1) {
var innerText = '';
for (var i = 0; i < node.childNodes.length; i++) {
innerText += getInnerText(node.childNodes[i]);
}
return innerText;
}
else {
return '';
}
}
so that approach would simply return the string from each recursive call
and concatenate it as needed.
Or you could build an array if strings if you prefer that and pass it
along e.g. (again pseudo code not meant to be a complete implementation)
function getInnerTextArray (node, textArray) {
if (typeof textArray == 'undefined') {
textArray = [];
}
if (node.nodeType == 3) {
textArray[textArray.length] = node.nodeValue;
}
else if (node.nodeType == 1) {
for (var i = 0; i < node.childNodes.length; i++) {
getInnerTextArray(node.childNodes[i], textArray);
}
}
return textArray;
}


--

Martin Honnen
http://JavaScript.FAQTs.com/
 
Reply With Quote
 
seans
Guest
Posts: n/a
 
      08-17-2005
Thanks everyone for all your help.

sean

 
Reply With Quote
 
seans
Guest
Posts: n/a
 
      08-17-2005
Thanks everyone for all your help.

sean

 
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
Usage of Static variable name in static context Vikram Kalra Java 23 09-07-2007 08:51 AM
non-static variable this cannot be referenced from a static context kookey Java 3 08-20-2005 07:43 PM
Does a static variable in a class's member fn always remain static? Sam C++ 4 01-13-2004 11:05 PM
Global static variable vs static method Marcin Vorbrodt C++ 3 09-05-2003 07:52 AM
a static local variable in a static method is thread local storage? Patrick Hoffmann C++ 3 08-08-2003 02:37 PM



Advertisments