Synopses & Reviews
Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole-a subset you can use to create truly extensible and efficient code.
Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation. Unfortunately, these good ideas are mixed in with bad and downright awful ideas, like a programming model based on global variables.
When Java applets failed, JavaScript became the language of the Web by default, making its popularity almost completely independent of its qualities as a programming language. In JavaScript: The Good Parts, Crockford finally digs through the steaming pile of good intentions and blunders to give you a detailed look at all the genuinely elegant parts of JavaScript, including:
- Syntax
- Objects
- Functions
- Inheritance
- Arrays
- Regular expressions
- Methods
- Style
- Beautiful features
The real beauty? As you move ahead with the subset of JavaScript that this book presents, you'll also sidestep the need to unlearn all the bad parts. Of course, if you want to find out more about the bad parts and how to use them badly, simply consult any other JavaScript book.
With JavaScript: The Good Parts, you'll discover a beautiful, elegant, lightweight and highly expressive language that lets you create effective code, whether you're managing object libraries or just trying to get Ajax to run fast. If you develop sites or applications for the Web, this book is an absolute must.
Synopsis
Now that JavaScript plays such a key role in modern websites, programmers who once dismissed it as a language for amateurs find themselves immersed in JavaScript code. JavaScript Patterns identifies key problem areas you might face when working with the language, and provides coding and design patterns as solutions. JavaScript expert Stoyan Stefanov -- Senior Yahoo! Technical and architect of the performance optimization tool 'YSlow' 2.0 -- includes several examples for each pattern as well as practical advice for implementing it.
- Learn how to look at your application code through a patterns lens
- Use code and design patterns to write clean and maintainable JavaScript code
- Recognize antipatterns -- solutions that create more problems than they solve
Synopsis
This authoritative book offers a detailed explanation of the features that make JavaScript an outstanding object-oriented programming language. As a result, this guide defines a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole.
Synopsis
What's the best approach for developing an application with JavaScript? This book helps you answer that question with numerous JavaScript coding patterns and best practices. If you're an experienced developer looking to solve problems related to objects, functions, inheritance, and other language-specific categories, the abstractions and code templates in this guide are ideal—whether you're using JavaScript to write a client-side, server-side, or desktop application.
Written by JavaScript expert Stoyan Stefanov—Senior Yahoo! Technical and architect of YSlow 2.0, the web page performance optimization tool—JavaScript Patterns includes practical advice for implementing each pattern discussed, along with several hands-on examples. You'll also learn about anti-patterns: common programming approaches that cause more problems than they solve.
- Explore useful habits for writing high-quality JavaScript code, such as avoiding globals, using single var declarations, and more
- Learn why literal notation patterns are simpler alternatives to constructor functions
- Discover different ways to define a function in JavaScript
- Create objects that go beyond the basic patterns of using object literals and constructor functions
- Learn the options available for code reuse and inheritance in JavaScript
- Study sample JavaScript approaches to common design patterns such as Singleton, Factory, Decorator, and more
- Examine patterns that apply specifically to the client-side browser environment
About the Author
Stoyan Stefanov is a Yahoo! web developer, Zend Certified Engineer, and an author, contributor, and tech reviewer of various O'Reilly books. He speaks regularly about web development topics at conferences and on his blog at www.phpied.com. Stoyan is the creator of the smush.it image optimization tool and architect of Yahoo's performance optimization tool YSlow 2.0.
Table of Contents
Dedication; Preface; Target Audience; Conventions Used in This Book; Using Code Examples; Safari® Books Online; How to Contact Us; Acknowledgments; Credits; Reading; Chapter 1: Introduction; 1.1 Patterns; 1.2 JavaScript: Concepts; 1.3 ECMAScript 5; 1.4 JSLint; 1.5 The Console; Chapter 2: Essentials; 2.1 Writing Maintainable Code; 2.2 Minimizing Globals; 2.3 for Loops; 2.4 for-in Loops; 2.5 (Not) Augmenting Built-in Prototypes; 2.6 switch Pattern; 2.7 Avoiding Implied Typecasting; 2.8 Avoiding eval(); 2.9 Number Conversions with parseInt(); 2.10 Coding Conventions; 2.11 Naming Conventions; 2.12 Writing Comments; 2.13 Writing API Docs; 2.14 Writing to Be Read; 2.15 Peer Reviews; 2.16 Minify...In Production; 2.17 Run JSLint; 2.18 Summary; Chapter 3: Literals and Constructors; 3.1 Object Literal; 3.2 Custom Constructor Functions; 3.3 Patterns for Enforcing new; 3.4 Array Literal; 3.5 JSON; 3.6 Regular Expression Literal; 3.7 Primitive Wrappers; 3.8 Error Objects; 3.9 Summary; Chapter 4: Functions; 4.1 Background; 4.2 Callback Pattern; 4.3 Returning Functions; 4.4 Self-Defining Functions; 4.5 Immediate Functions; 4.6 Immediate Object Initialization; 4.7 Init-Time Branching; 4.8 Function Properties--A Memoization Pattern; 4.9 Configuration Objects; 4.10 Curry; 4.11 Summary; Chapter 5: Object Creation Patterns; 5.1 Namespace Pattern; 5.2 Declaring Dependencies; 5.3 Private Properties and Methods; 5.4 Module Pattern; 5.5 Sandbox Pattern; 5.6 Static Members; 5.7 Object Constants; 5.8 Chaining Pattern; 5.9 method() Method; 5.10 Summary; Chapter 6: Code Reuse Patterns; 6.1 Classical Versus Modern Inheritance Patterns; 6.2 Expected Outcome When Using Classical Inheritance; 6.3 Classical Pattern #1--The Default Pattern; 6.4 Classical Pattern #2--Rent-a-Constructor; 6.5 Classical Pattern #3--Rent and Set Prototype; 6.6 Classical Pattern #4--Share the Prototype; 6.7 Classical Pattern #5--A Temporary Constructor; 6.8 Klass; 6.9 Prototypal Inheritance; 6.10 Inheritance by Copying Properties; 6.11 Mix-ins; 6.12 Borrowing Methods; 6.13 Summary; Chapter 7: Design Patterns; 7.1 Singleton; 7.2 Factory; 7.3 Iterator; 7.4 Decorator; 7.5 Strategy; 7.6 Façade; 7.7 Proxy; 7.8 Mediator; 7.9 Observer; 7.10 Summary; Chapter 8: DOM and Browser Patterns; 8.1 Separation of Concerns; 8.2 DOM Scripting; 8.3 Events; 8.4 Long-Running Scripts; 8.5 Remote Scripting; 8.6 Deploying JavaScript; 8.7 Loading Strategies; 8.8 Summary; Colophon;