Ayman Hourieh covers some interesting manipulation of Arrays that accommodates typical data structures. He also covers how to bind methods to objects, sorting with custom functions. He shows a custom AssertException, and covers using Firebug for debugging. He covers some JavaScript quirks: static local variables, null, undefined and delete.
Jon Raasch's notes on Nicholas Zakas's Google Tech Talk "Speed Up Your JavaScript" in which he covers basic performance improvements like local variables for more expensive lookups, avoiding for in loops, casting DOM array-like objects into proper arrays, avoid touching the DOM, use classes to change CSS instead of inline styles.
Andy Hume whittles away the various JavaScript libraries to produce a clear explanation of event delegation and how it works. Its a technique that reduces the number of event listeners attached to the document by attaching just one event listener to a container element. He presents a simple code example and talks about the benefits of event delegation, including performance and code maintenance. (Includes workarounds for IE and a Safari bug)
A DHTML shell that allows you to query the current browser window. Includes command line JavaScript execution, mouseover DOM query, CSS input, tab completion, profiler and object inspection. Can be configured to run off a bookmarklet, and works in IE, Firefox, Safari and Opera
Exploring the features of Firebug, with code examples covering using the console, timing code, stack traces, debugging and breakpoints, profiling, tracing HTTP requests. An excellent overview of Firebug's functionality
A Firefox extension from Chris Pederick which adds in a toolbar of web development goodies, from disabling JavaScript, CSS and images through to manipulating cookie information, speed reports and validator tools and error consoles.
A BetterExplained article that discusses how to reduce the initial load time of JavaScript files. Covers measuring load times, and a number of approaches to delaying the loading of a JavaScript file. Also covers minifying JavaScript and maintaining a debug version of code. Also covers an AJAX onLoad pattern to dynamically include JavaScript after page load, and HTTP caching of external JavaScript files
As web pages become more and more like applications, code performance becomes more and more important. This article looks at a number of performance issues to avoid, in EcmaScript, DOM and AJAX requests. Covers eval, the with keyword, try/catch in performance-critical code, global variables, implicit object conversion, string concatenation, primitive operations over function calls, repainting and reflowing documents, modifying elements, using XPath.
Douglas Crockford's presentation on Advanced JavaScript. He covers topics such as inheritance, modules, debugging, efficiency and JSON.
Instead of creating a new XmlHttpRequest object for every request, this post provides code to pool these objects together and reuse them. This saves a great deal of processing times, particularly in IE.
Christian Heilmann does a tree menu without using loops. It demonstrates the flexibility and power of Event delegation - catching events at a higher level in the document. It drastically cuts down on the number of events you need to add to a document. One event handler per menu, rather than one per link in the menu.
Michael Mahemoff runs into a problem with Protypes $$ function when looking for class names. Its taking over 90 seconds when more than 100 matches are returned. The advice is: Avoid $$(".classname") on large DOMs.
Svend Tofte puts together a detailed guide to setting up and using the Venkman debugger. From basic debugging to watchlists and call stacks, breakpoints, and more advanced techniques like meta comments and profiling. It also contains a list of other useful Venkman resources.
Christian Heilmann demonstrates delegating events, and compares it to the main alternative of assigning event handlers to each individual node. Its a technique that's important for writing applications that can scale.
Apart from being an elegant debugger, FireBug offers the developer hooks that can be used from JavaScript, offering logging, assertions, performance measuring, and command line functions for inspection or traversing a document.
A collection of performance related techniques, including temporary references (for deeply namespaced properties), optimising loops by referencing the collection length once, reasons to avoid the with syntax, using null over the delete function, comparison for equality and identity and short-circuit logical expressions
Ryan Campbell volume tests Prototype's each() Enumeration function and finds that although the code is more elegant than the for loops, the overhead is quite heavy, and the performance impact too high. The summary: If basic JavaScript will do the task, then use basic JavaScript