spacer
Yehuda Shiran March 22, 2000
The Stack Array
Tips: March 2000

Yehuda Shiran, Ph.D.
Doc JavaScript

Developer News
Microsoft Shows Off Silverlight 4, IE9 Plans
Metasploit Expands Vulnerability Test Framework
HyperCard Reborn?

The Stack is a known abstract type in computer science. No matter how you implement the Stack, it always supports the basic operations of push and pop. The push operation adds elements to the top of the stack. Here is the method to be declared as a prototype of the Array object type:

function push() {
  var sub = this.length;
  for (var i = 0; i < push.arguments.length; ++i) {
    this[sub] = push.arguments[i];
	sub++;
  }
}

The first line of the function sets the position of the new element. The length of the array is this.length. Since the first element of the array is at position 0, the last element of the array is at position length-1 and thus the new element will be at position length. The number of the elements to be added is the number of arguments the the function push() is being called with, push.arguments.length. In the loop that iterates over the new elements, we set each new element at the top of the array and then increment the index of of the top:

this[sub] = push.arguments[i];
sub++;

When the browser is a pre-5.5 version, we need to extend the Array's prototype with the new push() method:

if (bName() == 1 && bVer() >= 5.5)
else {
  Array.prototype.push = push;
}

We do nothing when the browser is IE 5.5 or higher. For other browsers or lower versions, we assign the home-brewed push() method. Let's take an example that shows the usage of the push() method:

var names = new Array("Tom", "Mark", "Bart", "John");
names.push("Jim", "Richard", "Tim");
alert(names);

The pop() method returns the stack's top element. Here is our implementation of the function:

function pop() {
  var lastElement = this[this.length - 1];
  this.length--;
  return lastElement;
}

The first line sets the last element of the array, situated at index this.length-1. The second line decrements the size of the array, this.length. When the browser is a pre-5.5 version, we need to extend the Array's prototype with the new pop() method:

if (bName() == 1 && bVer() >= 5.5)
else {
  Array.prototype.pop = pop;
}

We do nothing when the browser is IE 5.5 or higher. For other browsers or lower versions, we assign the home-brewed pop() method. Let's take an example:

var names = new Array("Tom", "Mark", "Bart", "Jonn");
var last = names.pop();
alert("Last = " + last + "  Other = " + names);

See live demo on the IE 5.5 in Column 57, The Doc Dialer.


People who read this tip also read these tips:

Look for similar tips by subject:

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Rolling Out Your Own HTML Application Version Control · HTML 5: Client-side Storage · Working with Ajax Server Extensions
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Wi-Fi Product Watch, November 2009 · Chip Market Recovering From '08 Collapse · Low-Cost Tools to Kickstart Your New Business