Linked lists are generally good at representing data when the fundamental operations are insertion or deletion at the start or end. In this sense they are very like the stack - indeed you can use a linked list to implement a stack. However they are also very good at inserting and deleting elements in the middle of the list. What they are not so good at is finding an element or finding the fifth, sixth or nth element. They are basically sequential access data structures.
In JavaScript you can generally avoid using lists by using the Array object either as an array or as a stack. Inserting and item in the middle of an array requires you to move a lot of data to create a free space. Insertion in the middle of a list only involves the manipulation of two pointer. This is the key observation concerning when you should use a list. If the data being stored is "big" and moving it around would take a lot of time then use a linked list. If the data is "small" then you might as well use a simpler data structure. Notice that "big" and "small" here really refer to the amount of data you are moving in a typical operation.
this.insertAfter = function(t, d) { var current = this.start; while (current !== null) { if (current.data === t) { var temp = List.makeNode(); temp.data = d; temp.next = current.next; if (current === this.end) this.end = temp; current.next = temp; return; } current = current.next; } };
this.item = function(i) { var current = this.start; while (current !== null) { i--; if (i === 0) return current; current = current.next; } return null; };
this.each = function(f) { var current = this.start; while (current !== null) { f(current); current = current.next; } }; }
Working with lower-level data is very much part of graphics. This extract from Ian Elliot's book on JavaScript Graphics looks at how to use typed arrays to access graphic data.
JavaScript should not be judged as if it was a poor version of the other popular languages - it isn't a Java or a C++ clone. It does things its own way. In particular, it doesn't do inheritance [ ... ]