for Web Developers, 2nd Edition Enhance Your Knowledge Advance Your Career Professional JavaScript for Web Developers, 2nd Edition 978-0-470-22780-0This updated bestseller offers an in-
Trang 2for Web Developers, 2nd Edition
Enhance Your Knowledge Advance Your Career
Professional JavaScript for Web Developers, 2nd Edition
978-0-470-22780-0This updated bestseller offers an in-depth look at the JavaScript language, and covers such topics as debugging tools in Microsoft Visual Studio, FireBug, and Drosera; client-side data storage with cookies, the DOM, and Flash; client-side graphics with JavaScript including SVG, VML, and Canvas; and design patterns including creational, structural, and behavorial patterns
Professional Ajax, 2nd Edition
978-0-470-10949-6
Professional Ajax, 2nd Edition is written for Web application developers
looking to enhance the usability of their web sites and Web applications and intermediate JavaScript developers looking to further understand the language This second edition is updated to cover Prototype, jQuery, FireBug, Microsoft Fiddler, ASP.NET AJAX Extensions, and much more
Concise Guide to Dojo
978-0-470-45202-8Dojo has rapidly become one of the hottest JavaScript based Web development frameworks It provides you with the power and flexibility to create attractive and useful dynamic Web applications quickly and easily
In this fast-paced, code-intensive guide, you’ll discover how to quickly start taking advantage of Dojo The pages are packed with useful information and insightful examples that will help you
Beginning JavaScript and CSS Development with jQuery
978-0-470-22779-4
Beginning JavaScript and CSS Development with jQuery presents the
world of dynamic Web applications to Web developers from the standpoint
of modern standards The author shows new JavaScript developers how working with the standard jQuery library will help them to do more with less code and fewer errors
Beginning JavaScript, 3rd Edition
978-0-470-05151-1This book aims to teach you all you need to know to start experimenting with JavaScript: what it is, how it works, and what you can do with it Starting from the basic syntax, you'll move on to learn how to create powerful Web applications
Beginning CSS, 2nd Edition
978-0-470-17708-2Updated and revised, this book offers a hands-on look at designing standards-based, large-scale, professional-level CSS Web sites Understand designers’ processes from start to finish and gain insight into how designers overcome a site’s unique set of challenges and obstacles Become comfortable with solving common problems, learn the best practices for using XHMTL with CSS, orchestrate a new look for a blog, tackle browser-compatibility issues, and develop functional navigational structures
Trang 3Introduction xxix
Chapter 1: What Is JavaScript? 1
Chapter 2: JavaScript in HTML 13
Chapter 3: Language Basics 23
Chapter 4: Variables, Scope, and Memory 79
Chapter 5: Reference Types 97
Chapter 6: Object-Oriented Programming 151
Chapter 7: Anonymous Functions 183
Chapter 8: The Browser Object Model 201
Chapter 9: Client Detection 229
Chapter 10: The Document Object Model 261
Chapter 11: DOM Levels 2 and 3 317
Chapter 12: Events 365
Chapter 13: Scripting Forms 433
Chapter 14: Error Handling and Debugging 465
Chapter 15: XML in JavaScript 515
Chapter 16: ECMAScript for XML 547
Chapter 17: Ajax and JSON 567
Chapter 18: Advanced Techniques 589
Chapter 19: Client-Side Storage 617
Chapter 20: Best Practices 635
Chapter 21: Upcoming APIs 669
Chapter 22: The Evolution of JavaScript 703
Appendix A: JavaScript Libraries 759
Appendix B: JavaScript Tools 765
Index 773
Trang 5JavaScript ® for Web Developers
2nd Edition
Trang 7JavaScript ® for Web Developers
2nd Edition
Nicholas C Zakas
Wiley Publishing, Inc.
Trang 8Copyright © 2009 by Wiley Publishing, Inc., Indianapolis, Indiana
Published simultaneously in Canada
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by
any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted
under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written
permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the
Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600
Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley &
Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at
http://www.wiley.com/go/permissions
Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or
warranties with respect to the accuracy or completeness of the contents of this work and specifically
disclaim all warranties, including without limitation warranties of fitness for a particular purpose No
warranty may be created or extended by sales or promotional materials The advice and strategies contained
herein may not be suitable for every situation This work is sold with the understanding that the publisher is
not engaged in rendering legal, accounting, or other professional services If professional assistance is
required, the services of a competent professional person should be sought Neither the publisher nor the
author shall be liable for damages arising herefrom The fact that an organization or Web site is referred to in
this work as a citation and/or a potential source of further information does not mean that the author or the
publisher endorses the information the organization or Web site may provide or recommendations it may
make Further, readers should be aware that Internet Web sites listed in this work may have changed or
disappeared between when this work was written and when it is read
For general information on our other products and services please contact our Customer Care Department
within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002
Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Wrox Programmer to Programmer, and related
trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc and/or its affiliates, in the
United States and other countries, and may not be used without written permission JavaScript is a
registered trademark of Sun Microsystems, Inc All other trademarks are the property of their respective
owners Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book
Trang 9mom, dad, Greg, Yiayia, and Papou
We may be few in numbers, but we are mighty!
Your constant love and support have made the past couple of years possible.
Trang 11Nicholas C Zakas has a B.S in Computer Science from Merrimack College and an M.B.A from Endicott
College He is the coauthor of Professional Ajax, Second Edition (Wiley, 2007) as well as dozens of online
articles Nicholas works for Yahoo! as a principal front-end engineer on Yahoo!’s front page and a
contributor to the Yahoo! User Interface (YUI) Library He has worked in web development for more than eight years, during which time he has helped develop web solutions in use at some of the largest
companies in the world
Nicholas can be reached through his web site www.nczonline.net
Trang 13Vice President and Executive Group PublisherRichard Swadley
Vice President and Executive PublisherJoseph B Wikert
Project Coordinator, CoverLynsey Stanford
ProofreaderKathryn Duggan
IndexerJack Lewis
Trang 15It takes many people to create a single book, and I’d like to thank some people here for their
contributions to this work
First and foremost, thanks to everyone at Wiley for their support: Jim Minatel for once again putting his faith in me; Kevin Kent for dealing with the hectic outline rearrangements I tend to make throughout writing; and Alexei Gorkov, the best technical editor in the world, who makes sure that everything I say
is 100-percent accurate
A big thanks to everyone who provided feedback on draft chapters: David Serduke, Julian Turner, Pete Frueh, Chris Klaiber, Stoyan Stefanov, Ross Harmes, and David Golightly Your early feedback was really helpful in making this book what it is today
Last, thanks to Eric Miraglia for his contribution of a foreword Eric is the reason I ended up at Yahoo!, and it has been a pleasure to work with him for the past two years
Trang 17Foreword xxvii Introduction xxix
Chapter 1: What Is JavaScript? 1
JavaScript Implementations 3
Trang 18The Boolean Type 30
Chapter 4: Variables, Scope, and Memory 79
Primitive and Reference Values 79
Execution Context and Scope 84
Trang 19Primitive Wrapper Types 130
Summary 149
Trang 20Chapter 6: Object-Oriented Programming 151
Mimicking Block Scope 191
Summary 199
Chapter 8: The Browser Object Model 201
Trang 21The location Object 216
Summary 258
Chapter 10: The Document Object Model 261
Trang 22Event Handlers or Listeners 368
Trang 23Mutation Events 402
Memory and Performance 422
Scripting Select Boxes 450
Summary 464
Chapter 14: Error Handling and Debugging 465
Browser Error Reporting 465
Trang 24Common Internet Explorer Errors 492
XML DOM Support in Browsers 515
XPath Support in Browsers 530
Trang 26Chapter 18: Advanced Techniques 589
Trang 27Performance 647
Trang 28Appendix A: JavaScript Libraries 759
Appendix B: JavaScript Tools 765
Index 773
Trang 29JavaScript, for much of its existence, has been the subject of fear, invective, disdain, and
misunderstanding In its early years, many “serious programmers” thought that JavaScript wasn’t
serious enough
By contrast, many liberal arts majors drafted into web-developer service during the dotcom boom
thought JavaScript was mysterious and arcane Many who had both the tenacity and the patience to fully grok JavaScript as a language were nevertheless frustrated by its inconsistent implementation across competing browsers All of these factors helped lead to a proliferation of awkward and poorly conceived scripts And, through the extraordinary openness of front-end code on the Web, a lot of bad habits were copied from one site and pasted into the source of another Thus JavaScript’s bad reputation as a
language, which was generally ill-deserved, became intertwined with a deservedly bad reputation
surrounding its implementations
Around 2001 (with the release of Internet Explorer 6), improved browser implementations and
improving practice in web development began to converge The XMLHttpRequest object at the heart of Ajax was slowly being discovered, and a new paradigm of desktop-style user interaction was emerging within the browser The DOM APIs that allowed JavaScript to manipulate the structure and content of web documents had solidified CSS, for all the contortions, omissions, and the willful insanity of its
implementations by browser vendors, had progressed far enough that beauty and responsiveness could
be combined with the Web’s new interactive power As a result, JavaScript became the subject of a new set of emotions: surprise, delight, and awe If you think back to the first time you used Google Maps in
2004, you may recall the feeling
Google Maps was among an emerging class of applications that took browser-based programming as seriously as back-end programming and made us think differently about the application canvas provided
by the web browser (Oddpost, which provided Outlook-style email functionality in a webmail client as early as 2003, was another notable pioneer.) The proliferation of these applications and the increasing market penetration of browsers that supported them led to a genuine renaissance in web application
engineering “Web 2.0” was born, and Ajax became the “it” technology The Web was suddenly interesting all over again JavaScript, as the only programming language of the Web, became more interesting, too
Interesting, but hard to do well JavaScript and its companion APIs in the Document Object Model (DOM) and Browser Object Model (BOM) were inconsistently implemented, making cross-browser
implementations vastly more difficult than they needed to be The profession of front-end engineering was still young University curricula had not (and still have not) stepped in to meet the training challenge
JavaScript, arguably the most important programming language in the world by the end of 2004, was not
a first-class subject in the academic sense of the word A new day was dawning on the Web, and there was a serious question as to whether there would be enough knowledgeable, well-informed engineers to meet the new challenges
Many technical writers stepped in to fill the gap with books on JavaScript There were dozens of these over the years, but by and large they were a disappointing lot Some of them promoted techniques that
Trang 30were relevant only in retrograde browsers; some promoted techniques that were easy to cut and paste
but hard to extend and maintain Puzzlingly, many books on JavaScript seemed to be written by people
who didn’t really like JavaScript, who didn’t think you should like it, and who weren’t optimistic about
your ability to understand it fully
One of the genuinely good books in the world of front-end engineering arrived when Nicholas C Zakas
published the first edition of Professional JavaScript for Web Developers in 2005 At the time, my colleagues
and I were working at Yahoo! to create the Yahoo! User Interface Library (YUI) as a foundation for
front-end engineering here and to evangelize best practices in our nascent discipline Every Friday, we’d
gather in a classroom to talk about the front-end engineering and to teach classes on JavaScript, CSS, and
the creation of web applications in the browser We carefully reviewed the offerings at the time for books
that would help new engineers learn how to build robust, standards-based, easy-to-maintain web
applications using advanced JavaScript and DOM scripting As soon as it was published, Zakas’s book
became our textbook for JavaScript
We’ve been using it ever since We thought so highly of the book that we talked Zakas into coming to
Yahoo! to help shape the front-end engineering community here
What Zakas accomplished with Professional JavaScript for Web Developers is singular: He treated JavaScript
as a subject that is both serious and accessible If you are a programmer, you will learn where JavaScript
fits into the broader spectrum of languages and paradigms with which you’re familiar You’ll learn how
its system of inheritance and its intrinsic dynamism are, yes, unconventional but also liberating and
powerful You’ll learn to appreciate JavaScript as a language from a fellow programmer who respects it
and understands it
If you’re one of those liberal arts majors who was drawn into this profession in the boom years and never
left, and if you want to fill in the gaps of your understanding of JavaScript, you’ll find Zakas to be the
mentor you’ve always wanted — the one who will help you make the transition from “making things
work” to “making things that work well.” He’ll leave you with a serious understanding of a serious subject
Best of all, you’ll find that he doesn’t pander to preconceived notions about how deeply you should
understand the language He takes it seriously, and in a patient, accessible way he helps you to do the same
This second edition of Professional JavaScript for Web Developers — expanded, updated, improved — drops
some subjects that are less relevant to the profession today and upgrades the rest with what we’ve
learned between 2005 and 2008 These years have been important ones, and Zakas is on the front line of
the process of learning He’s spent those years architecting the current generation of the Web’s most
popular personal portal (My Yahoo!) and the next version of the web’s most visited site (Yahoo!’s front
page) Insights forged in these complex, ultra-high-volume applications inform every page of this new
volume, all passed through Zakas’s unique filter as a teacher/author
As a result, his solutions go beyond being book-smart and include the kind of practical wisdom you can
only get by living and breathing code on a daily basis
And that’s seriously good news for the rest of us Professional JavaScript for Web Developers is now even
better, even more relevant, and even more important to have on your shelf
Eric Miraglia, Ph.D
Sr Engineering Manager, Yahoo! User Interface Library (YUI)Sunnyvale, California
Trang 31Introduction
Some claim that JavaScript is now the most popular programming language in the world, running any number of complex web applications that the world relies on to do business, make purchases, manage processes, and more
JavaScript is very loosely based on Java, an object - oriented programming language popularized for use on the Web by way of embedded applets Although JavaScript has a similar syntax and programming methodology,
it is not a “ light ” version of Java Instead, JavaScript is its own dynamic language, finding its home in web browsers around the world and enabling enhanced user interaction on web sites and web applications alike
In this book, JavaScript is covered from its very beginning in the earliest Netscape browsers to the
present - day incarnations flush with support for the DOM and Ajax You learn how to extend the
language to suit specific needs and how to create seamless client - server communication without
intermediaries such as Java or hidden frames In short, you learn how to apply JavaScript solutions to business problems faced by web developers everywhere
What Does This Book Cover?
Professional JavaScript for Web Developers , 2nd Edition, provides a developer - level introduction along with
the more advanced and useful features of JavaScript
Starting at the beginning, the book explores how JavaScript originated and evolved into what it is today
A detailed discussion of the components that make up a JavaScript implementation follows, with specific focus on standards such as ECMAScript and the Document Object Model (DOM) The differences in JavaScript implementations used in different popular web browsers are also discussed
Building on that base, the book moves on to cover basic concepts of JavaScript, including its version of object - oriented programming, inheritance, and its use in various markup languages such as HTML An
in - depth examination of events and event handling is followed by an exploration of browser-detection techniques and a guide to using regular expressions in JavaScript The book then takes all this
knowledge and applies it to creating dynamic user interfaces
The last part of the book is focused on advanced topics, including performance and memory
optimization, best practices, and a look at where JavaScript is going in the future
Who Is This Book For?
This book is aimed at the following three groups of readers:
Experienced developers familiar with object - oriented programming who are looking to learn JavaScript as it relates to traditional object-oriented (OO) languages such as Java and C++
Web application developers attempting to enhance the usability of their web sites and web applications
❑
❑
Trang 32In addition, familiarity with the following related technologies is a strong indicator that this book is for
This book is not aimed at beginners who lack a basic computer-science background or those looking to
add some simple user interactions to web sites These readers should instead refer to Wrox ’ s Beginning
JavaScript, 3rd Edition (Wiley, 2007)
What You Need to Use This Book
To run the samples in the book, you need the following:
Windows 2000, Windows Server 2003, Windows XP, Vista, or Mac OS X
Internet Explorer 6 or higher, Firefox 2 or higher, Opera 9 or higher, Chrome 0.2 or higher, or
Safari 2 or higher
The complete source code for the samples is available for download at www.wrox.com/
How This Book Is Str uctured
This book comprises the following chapters:
Chapter 1, What Is JavaScript? — Explains the origins of JavaScript: where it came from, how it
evolved, and what it is today Concepts introduced include the relationship between JavaScript and
ECMAScript, the Document Object Model (DOM), and the Browser Object Model (BOM) A discussion
of the relevant standards from the European Computer Manufacturer ’ s Association (ECMA) and the
World Wide Web Consortium (W3C) is also included
Chapter 2, JavaScript in HTML — Examines how JavaScript is used in conjunction with HTML to
create dynamic web pages This chapter introduces the various ways of embedding JavaScript into a
page, including a discussion surrounding the JavaScript content - type and its relationship to the
< script > element
Chapter 3, Language Basics — Introduces basic language concepts, including syntax and flow control
statements This chapter explains the syntactic similarities of JavaScript and other C - based languages
and points out the differences Type coercion is introduced as it relates to built - in operators
Trang 33Chapter 4, Variables, Scope, and Memory — Explores how variables are handled in JavaScript given
their loosely typed nature A discussion about the differences between primitive and reference values
is included, as is information about execution context as it relates to variables Also, a discussion about garbage collection in JavaScript explains how memory is reclaimed when variables go out of scope
Chapter 5, Reference Types — Covers all of the details regarding JavaScript ’ s built - in reference types,
such as Object and Array Each reference type described in ECMA - 262 is discussed both in theory and how it relates to browser implementations
Chapter 6, Object - Oriented Programming — Explains how to use object - oriented (OO) programming
in JavaScript Since JavaScript has no concept of classes, several popular techniques are explored for object creation and inheritance Also covered in this chapter is the concept of function prototypes and how that relates to an overall OO approach
Chapter 7, Anonymous Functions — Explores one of the most powerful aspects of JavaScript:
anonymous functions Topics include closures, how the this object works, the module pattern, and creating private object members
Chapter 8, The Browser Object Model — Introduces the Browser Object Model (BOM), which is
responsible for objects allowing interaction with the browser itself Each of the BOM objects is covered, including window , document , location , navigator , and screen
Chapter 9, Client Detection — Explains various approaches to detecting the client machine and its
capabilities Different techniques include capability detection and user - agent string detection This chapter discusses the pros and cons as well as the situational appropriateness of each approach
Chapter 10, The Document Object Model — Introduces the Document Object Model (DOM) objects
available in JavaScript as defined in DOM Level 1 A brief introduction to XML and its relationship to the DOM gives way to an in - depth exploration of the entire DOM and how it allows developers to manipulate a page
Chapter 11, DOM Levels 2 and 3 — Builds on the previous chapter, explaining how DOM Levels 2
and 3 augmented the DOM with additional properties, methods, and objects Compatibility issues between Internet Explorer and other browsers are discussed
Chapter 12, Events — Explains the nature of events in JavaScript, where they originated, legacy
support, and how the DOM redefined how events should work A variety of devices are covered,
including the Wii and iPhone
Chapter 13, Scripting Forms — Looks at using JavaScript to enhance form interactions and work
around browser limitations The discussions in this chapter focus on individual form elements such as text boxes and select boxes and on data validation and manipulation
Chapter 14, Error Handling and Debugging — Discusses how browsers handle errors in JavaScript
code and presents several ways to handle errors Debugging tools and techniques are also discussed for each browser, including recommendations for simplifying the debugging process
Chapter 15, XML in JavaScript — Presents the features of JavaScript used to read and manipulate
eXtensible Markup Language (XML) data This chapter explains the differences in support and objects in various web browsers, and offers suggestions for easier cross - browser coding This chapter also covers
Trang 34Chapter 16, ECMAScript for XML — Discusses the ECMAScript for XML (E4X) extension to
JavaScript, which is designed to simplify working with XML This chapter explains the advantages of
E4X over using the DOM for XML manipulation
Chapter 17, Ajax and JSON — Looks at common Ajax techniques, including the use of the
XMLHttpRequest object and Internet Explorer ’ s XDomainRequest object for cross - domain Ajax This
chapter explains the differences in browser implementations and support as well as recommendations
for usage
Chapter 18, Advanced Techniques — Dives into some of the more complex JavaScript patterns,
including function currying, partial function application, and dynamic functions This chapter also
covers creating a custom event framework to enable simple event support for custom objects
Chapter 19, Client - Side Storage — Discusses the various techniques for storing data on the client
machine This chapter begins with a discussion of the most commonly supported feature, cookies, and
then discusses newer functionality such as DOM storage
Chapter 20, Best Practices — Explores approaches to working with JavaScript in an enterprise
environment Techniques for better maintainability are discussed, including coding techniques,
formatting, and general programming practices Execution performance is discussed and several
techniques for speed optimization are introduced Last, deployment issues are discussed, including
how to create a build process
Chapter 21, Upcoming APIs — Introduces APIs being created to augment JavaScript in the browser
Even though these APIs aren ’ t yet complete or fully implemented, they are on the horizon and
browsers have already begun partially implementing their features This chapter includes discussions
on the Selectors API and HTML 5
Chapter 22, The Evolution of JavaScript — Looks into the future of JavaScript to see where the
language is headed ECMAScript 3.1, ECMAScript 4, and ECMAScript Harmony are discussed
Conventions
To help you get the most from the text and keep track of what ’ s happening, a number of conventions are
used throughout this book
Boxes like this one hold important, not - to - be forgotten information that is directly
relevant to the surrounding text
Notes, tips, hints, tricks, and asides to the current discussion are offset and placed in italics like this
As for styles in the text:
N ew terms and important words are italicized when they’re introduced
K eyboard combinations are shown like this: Ctrl+A
F ile names, URLs, and code within the text look like this: persistence.properties
❑
❑
❑
Trang 35C ode is presented in two different ways:
Monofont type with no highlighting is used for most code examples
Gray highlighting is used to emphasize code that’s particularly important in the present context
Source Code
As you work through the examples in this book, you may choose either to type in all the code manually
or to use the source code files that accompany the book All of the source code used in this book is
available for download at www.wrox.com Once at the site, simply locate the book ’ s title (either by using the Search box or by using one of the title lists) and click the Download Code link on the book ’ s detail page to obtain all the source code for the book
Because many books have similar titles, you may find it easiest to search by ISBN This book ’ s ISBN is
978 - 0 - 470 - 22780 - 0
After you download the code, just decompress it with your favorite compression tool Alternately, you can go to the main Wrox code download page at www.wrox.com/dynamic/books/download.aspx to see the code available for this book and all other Wrox books
Errata
We make every effort to ensure that there are no errors in the text or in the code However, no one is perfect, and mistakes do occur If you find an error in one of our books, such as a spelling mistake or faulty piece of code, we would be very grateful for your feedback By sending in errata, you may save another reader hours of frustration and help us provide even higher - quality information
To find the errata page for this book, go to www.wrox.com and locate the title using the Search box or one
of the title lists Then, on the book details page, click the Book Errata link On this page you can view all errata that has been submitted for this book and posted by Wrox editors A complete book list, including links to each book ’ s errata, is also available at www.wrox.com/misc - pages/booklist.shtml
If you don ’ t spot “ your ” error on the Book Errata page, go to www.wrox.com/contact/techsupport
.shtml and complete the form there to send us the error you have found We ’ ll check the information and, if appropriate, post a message to the book ’ s errata page and fix the problem in subsequent editions of the book
p2p.wrox.com
For author and peer discussion, join the P2P forums at p2p.wrox.com The forums are a web - based
system for you to post messages relating to Wrox books and related technologies, as well as to interact with other readers and technology users The forums offer a subscription feature to e - mail you topics of interest of your choosing when new posts are made to the forums Wrox authors, editors, other industry experts, and your fellow readers are present on these forums
❑
Trang 36At http://p2p.wrox.com , you will find a number of different forums that will help you not only as you
read this book, but also as you develop your own applications To join the forums, just follow these steps:
1 Go to p2p.wrox.com and click the Register link
2 Read the terms of use and click Agree
3 Complete the required information to join as well as any optional information you wish to
provide, and click Submit
4 You will receive an e - mail with information describing how to verify your account and complete
the joining process
You can read messages in the forums without joining P2P, but in order to post your own messages, you
must join
Once you join, you can post new messages and respond to messages other users post You can read
messages at any time on the Web If you would like to have new messages from a particular forum
e-mailed to you, click the Subscribe to this Forum icon by the forum name in the forum listing
For more information about how to use the Wrox P2P, be sure to read the P2P FAQs for answers to
questions about how the forum software works as well as many common questions specific to P2P and
Wrox books To read the FAQs, click the FAQ link on any P2P page
Trang 37JavaScript ® for Web Developers
2nd Edition
Trang 39What Is JavaScript?
When JavaScript first appeared in 1995, its main purpose was to handle some of the input
validation that had previously been left to server - side languages such as Perl Prior to that time, a
round - trip to the server was needed to determine if a required field had been left blank or an
entered value was invalid Netscape Navigator sought to change that with the introduction of
JavaScript The capability to handle some basic validation on the client was an exciting new feature
at a time when use of telephone modems was widespread The associated slow speeds turned
every trip to the server into an exercise in patience
Since that time, JavaScript has grown into an important feature of every major web browser on the
market No longer bound to simple data validation, JavaScript now interacts with nearly all
aspects of the browser window and its contents JavaScript is recognized as a full programming
language, capable of complex calculations and interactions, including closures, anonymous
(lambda) functions, and even metaprogramming JavaScript has become such an important part of
the Web that even alternative browsers, including those on mobile phones and those designed for
users with disabilities, support it Even Microsoft, with its own client - side scripting language
called VBScript, ended up including its own JavaScript implementation in Internet Explorer from
its earliest version
The rise of JavaScript from a simple input validator to a powerful programming language could
not have been predicted JavaScript is at once a very simple and very complicated language that
takes minutes to learn but years to master To begin down the path to using JavaScript ’ s full
potential, it is important to understand its nature, history, and limitations
A Shor t Histor y
Around 1992, a company called Nombas (later bought by Openwave) began developing an
embedded scripting language called C - minus - minus (Cmm for short) The idea behind Cmm was
simple: a scripting language powerful enough to replace macros, but still similar enough to C (and
C++) that developers could learn it quickly This scripting language was packaged in a shareware
product called CEnvi, which first exposed the power of such languages to developers Nombas
Trang 40eventually changed the name Cmm to ScriptEase ScriptEase became the driving force behind Nombas
products When the popularity of Netscape Navigator started peaking, Nombas developed a version of
CEnvi that could be embedded into web pages These early experiments were called Espresso Pages , and
they represented the first client - side scripting language used on the World Wide Web Little did Nombas
know that its ideas would become an important foundation for the Internet
As the Web gained popularity, a gradual demand for client - side scripting languages developed At
the time, most Internet users were connecting over a 28.8 kbps modem even though web pages were
growing in size and complexity Adding to users ’ pain was the large number of round - trips to the server
required for simple form validation Imagine filling out a form, clicking the Submit button, waiting
30 seconds for processing, and then being met with a message indicating that you forgot to complete a
required field Netscape, at that time on the cutting edge of technological innovation, began seriously
considering the development of a client - side scripting language to handle simple processing
Brendan Eich, who worked for Netscape at the time, began developing a scripting language called
LiveScript for the release of Netscape Navigator 2 in 1995, with the intention of using it both in the
browser and on the server (where it was to be called LiveWire) Netscape entered into a development
alliance with Sun Microsystems to complete the implementation of LiveScript in time for release Just
before Netscape Navigator 2 was officially released, Netscape changed LiveScript ’ s name to JavaScript to
capitalize on the buzz that Java was receiving from the press
Because JavaScript 1.0 was such a hit, Netscape released version 1.1 in Netscape Navigator 3 The
popularity of the fledgling Web was reaching new heights and Netscape had positioned itself to be
the leading company in the market At this time, Microsoft decided to put more resources into a
competing browser named Internet Explorer Shortly after Netscape Navigator 3 was released, Microsoft
introduced Internet Explorer 3 with a JavaScript implementation called JScript (so called to avoid any
possible licensing issues with Netscape) This major step for Microsoft into the realm of web browsers in
August 1996 is now a date that lives in infamy for Netscape, but it also represented a major step forward
in the development of JavaScript as a language
Microsoft ’ s implementation of JavaScript meant that there were three different JavaScript versions
floating around: JavaScript in Netscape Navigator, JScript in Internet Explorer, and CEnvi in ScriptEase
Unlike C and many other programming languages, JavaScript had no standards governing its syntax or
features, and the three different versions only highlighted this problem With industry fears mounting, it
was decided that the language must be standardized
In 1997, JavaScript 1.1 was submitted to the European Computer Manufacturers Association
(Ecma) as a proposal Technical Committee #39 (TC39) was assigned to “ standardize the syntax
and semantics of a general purpose, cross - platform, vendor - neutral scripting language ”
( http://www.ecma - international.org/memento/TC39.htm ) Made up of programmers from
Netscape, Sun, Microsoft, Borland, and other companies with interest in the future of scripting, TC39
met for months to hammer out ECMA - 262, a standard defining a new scripting language named
ECMAScript
The following year, the International Organization for Standardization and International Electrotechnical
Commission (ISO/IEC) also adopted ECMAScript as a standard (ISO/IEC - 16262) Since that time,
browsers have tried, with varying degrees of success, to use ECMAScript as a basis for their JavaScript
implementations