There is not a single interpreted language used today that causes more excitement, confusion, disdain, and conflict than JavaScript. The language is so incredibly flexible that it is difficult to separate a developer’s choice of coding style from JavaScript best practices. If you are an absolute beginner (as we all once were), this can be an incredibly frustrating experience.
The immensity of information available today is also adversely focused on AJAX, frameworks and APIs. I wonder how designers and developers manage to wade through the cruft to even begin learning the basics. If you are like me, and have evolved along with JavaScript, then the state of the language makes a little more sense. However, if you are in the first steps of your journey, it might seem like a long and winding road ahead.
This concept and resource guide is a way to deal with these issues. Instead of listing a compendium of resources too vast to matter to anyone, I have listed only those that I feel truly contribute to the process of mastering JavaScript. Preceding the list is an outline of advanced JavaScript concepts that will help “light the master’s path”.
JavaScript ConceptsAccess ControlA JavaScript design pattern that prohibits another script from accessing portions of functionality in your JavaScript is enforcing “access control”. In a language like C# or Java, access control is explicitly declared with access control keywords such as
private,
public or
protected. With JavaScript, achieving access control is a bit more work.
Accessible JavaScriptThe term “accessible JavaScript” refers to movements that support RIAs in conjunction with accessibility. The most notable methodology is Hijax, a term coined by Jeremy Keith, the author of
DOM Scripting. Roger Johansson is a successful Web developer who also promotes accessible JavaScript techniques on his popular blog 456 Berea Street.
ClosuresArguably the most difficult concept in JavaScript to understand, closures are complicated, and can have harmful consequences if not implemented correctly. Closures in JavaScript are essentially a design pattern that allows an inner (nested) function to access the variables associated with an outer function, even after that function has been executed (returned).
Classical OOPIn several technical circles, JavaScript is often referred to as a prototype-based or object-based language, as it lacks some features available in full-blown object oriented programming. Regardless, in order to be a successful Web developer, you must understand the details surrounding classical object oriented programming with JavaScript.
Concepts in AJAXAJAX is conceptually quite simple. Hundreds of examples are available, and the number of tutorials is too numerous to count these days. However, within an intricate RIA, several complicated problems can arise for the budding architect. Performance issues play center stage, and it is important to explore alternative methods of implementing AJAX solutions.
Memory LeaksOne of the most difficult issues plaguing JavaScript programmers today is memory leaks brought on by a combination of browser bugs and poor coding practices. Even though memory leaks are often identified with Internet Explorer, Web applications in several browsers have been known to freeze up the client interface and cause excessive memory leakage.
Namespaces and Self-invoking FunctionsAt the forefront of every JavaScript library is a namespace. Although the style of execution can vary slightly, the concept is incredibly important if you are considering the release of an API or framework. Creating a non-conflicting namespace (which typically involves self-invoking functions), is both friendly and unobtrusive, and it should be a part of your repertoire.
JSON and Object Literal NotationJavaScript Object Literal Notation and JSON both rely completely on JavaScript’s implementation of the hash object. Although a subset of object oriented programming with JavaScript, object literal notation is becoming a widely accepted alternative to functions as constructors for objects. I suggest first reading the classical OOP articles, and then move on to these articles.
SecurityWhile security continues to be a major concern among Web developers, much of the hype surrounding XSS (cross-site scripting) has diminished. However, techniques for overcoming security flaws in JavaScript should be well known by all JavaScript programmers, new and old. Exploits are discovered often, and keeping up with hacker trends is important.
JavaScript Topics, Articles & Tutorials (Publications)
JavaScript Topics, Articles & Tutorials (Personal)
JavaScript Development Tools
JavaScript Frameworks