If you are reading this book, you know that there is nothing simple about creating effective
and cross-browser JavaScript code. In addition to the normal challenges of writing clean
code, we have the added complexity of dealing with obtuse browser differences and
complexities. To deal with these challenges, JavaScript developers frequently capture sets of
common and reusable functionality in the form of JavaScript libraries. These libraries vary
widely in approach, content and complexity, but one constant remains: they need to be easy
to use, incur the least amount of overhead, and be able to work across all browsers that we
wish to target.
1