Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Professional JavaScript for Web developers
PREMIUM
Số trang
674
Kích thước
9.0 MB
Định dạng
PDF
Lượt xem
1415

Professional JavaScript for Web developers

Nội dung xem thử

Mô tả chi tiết

01_579088 ffirs.qxd 3/28/05 11:33 AM Page ii

Professional JavaScript™ for Web Developers

01_579088 ffirs.qxd 3/28/05 11:33 AM Page i

01_579088 ffirs.qxd 3/28/05 11:33 AM Page ii

Professional JavaScript™ for Web Developers

Nicholas C. Zakas

01_579088 ffirs.qxd 3/28/05 11:33 AM Page iii

Professional JavaScript™ for Web Developers

Copyright © 2005 by Wiley Publishing Inc. All rights reserved.

Published 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 Section 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, Inc., 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax

(978) 646-8700. Requests to the Publisher for permission should be addressed to the Legal Department,

Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317)

572-4355, or online at 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 PARTIC￾ULAR PURPOSE. NO WARRANTY MAY BE CREATED OR EXTENDED BY SALES OR PROMO￾TIONAL 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 PRO￾FESSIONAL SERVICES. IF PROFESSIONAL ASSISTANCE IS REQUIRED, THE SERVICES OF A

COMPETENT PROFESSIONAL PERSON SHOULD BE SOUGHT. NEITHER THE PUBLISHER NOT

THE AUTHOR SHALL BE LIABLE FOR DAMAGES ARISING HEREFROM. THE FACT THAT AN

ORGANIZATION OR WEBSITE 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 WEBSITE MAY

PROVIDE OR RECOMMENDATIONS IT MAY MAKE. FURTHER, READERS SHOULD BE AWARE

THAT INTERNET WEBSITES 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 Depart￾ment within the United States at (800) 762-2974, outside the United States at (317) 572-3993 or fax (317)

572-4002.

Trademarks: Wiley, the Wiley Publishing logo, Wrox, the Wrox logo, and Programmer to Programmer

are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates. JavaScript is a

trademark of Sun Microsystems, Inc. in the United States and other countries. 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.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print

may not be available in electronic books.

Library of Congress Cataloging-in-Publication Data is available from the publisher.

ISBN-13: 978-0-7645-7908-0

ISBN-10: 0-7645-7908-8

Printed in the United States of America

10 9 8 7 6 5 4 3 2 1

01_579088 ffirs.qxd 3/28/05 11:33 AM Page iv

About the Author

Nicholas C. Zakas is a user interface designer for Web applications, specializing in client-side technolo￾gies such as JavaScript, HTML, and CSS. Nicholas currently works as Senior Software Engineer, Design

Engineering, at MatrixOne, Inc. located in Westford, Massachusetts, USA.

Nicholas has a B.S. in Computer Science from Merrimack College, where he learned traditional pro￾gramming in C and C++. During college, he began investigating the World Wide Web and HTML in his

spare time, eventually teaching himself enough to be hired as Webmaster of a small software company

named Radnet, Inc. in Wakefield, Massachusetts, USA. It was there that Nicholas began learning

JavaScript and working on Web applications.

Nicholas can be reached through his Web site, http://www.nczonline.net/.

01_579088 ffirs.qxd 3/28/05 11:33 AM Page v

Credits

Vice President and Executive Group Publisher:

Richard Swadley

Vice President and Publisher:

Joseph B. Wikert

Acquisitions Editor:

Jim Minatel

Editorial Manager:

Mary Beth Wakefield

Development Editor:

Sharon Nash

Senior Production Editor:

Angela Smith

Technical Editor:

Jean-Luc David, Wiley-Dreamtech India Pvt Ltd

Text Design & Composition:

Wiley Composition Services

01_579088 ffirs.qxd 3/28/05 11:33 AM Page vi

vii

Acknowledgments

It takes more than just one person to write a book of this nature, despite the single name on the front

cover. Without the help of numerous individuals, this book would not have been possible.

First are foremost, thanks to everyone at Wiley Publishing, especially Jim Minatel and Sharon Nash, for

providing all the guidance and support that a new author needs.

Thanks to all those who offered their ideas on what a good JavaScript book should include: Keith

Ciociola, Ken Fearnley, John Rajan, and Douglas Swatski.

A special thanks to everyone who reviewed the subject matter ahead of time: Erik Arvidsson, Bradley

Baumann, Guilherme Blanco, Douglas Crockford, Jean-Luc David, Emil A. Eklund, Brett Fielder, Jeremy

McPeak, and Micha Schopman. All your input was excellent and made for a much better book.

Thanks to Drs. Ed and Frances Bernard for keeping me in tip-top health during the writing of this book

and the past few years.

Last, but certainly not least, thanks to my family, mom, dad, and Greg, and my extremely understanding

girlfriend, Emily. Your love and support helped take me from the proposal to the final published copy.

01_579088 ffirs.qxd 3/28/05 11:33 AM Page vii

01_579088 ffirs.qxd 3/28/05 11:33 AM Page viii

ix

Contents

Acknowledgments vii

Introduction xxi

Chapter 1: What Is JavaScript? 1

A Short History 1

JavaScript Implementations 3

ECMAScript 3

The Document Object Model (DOM) 6

The Browser Object Model (BOM) 9

Summary 9

Chapter 2: ECMAScript Basics 11

Syntax 11

Variables 12

Keywords 15

Reserved Words 15

Primitive and Reference Values 15

Primitive Types 16

The typeof operator 16

The Undefined type 17

The Null type 18

The Boolean type 18

The Number type 18

The String type 20

Conversions 21

Converting to a string 22

Converting to a number 23

Type Casting 24

Reference Types 25

The Object class 26

The Boolean class 27

The Number class 27

02_579088 ftoc.qxd 3/28/05 11:33 AM Page ix

x

Contents

The String class 29

The instanceof operator 32

Operators 33

Unary operators 33

Bitwise operators 37

Boolean operators 43

Multiplicative operators 46

Additive operators 47

Relational operators 49

Equality operators 50

Conditional operator 52

Assignment operators 52

Comma operator 53

Statements 53

The if statement 53

Iterative statements 54

Labeled statements 56

The break and continue statements 56

The with statement 58

The switch statement 58

Functions 59

No overloading 61

The arguments object 62

The Function class 63

Closures 65

Summary 66

Chapter 3: Object Basics 67

Object-Oriented Terminology 67

Requirements of object-oriented languages 68

Composition of an object 68

Working with Objects 68

Declaration and instantiation 68

Object references 69

Dereferencing objects 69

Early versus late binding 69

Types of Objects 70

Native objects 70

Built-in objects 81

Host objects 87

02_579088 ftoc.qxd 3/28/05 11:33 AM Page x

xi

Contents

Scope 88

Public, protected, and private 88

Static is not static 88

The this keyword 89

Defining Classes and Objects 90

Factory paradigm 90

Constructor paradigm 92

Prototype paradigm 93

Hybrid constructor/prototype paradigm 94

Dynamic prototype method 95

Hybrid factory paradigm 96

Which one to use? 97

A practical example 97

Modifying Objects 99

Creating a new method 99

Redefining an existing method 100

Very late binding 101

Summary 102

Chapter 4: Inheritance 103

Inheritance in Action 103

Implementing Inheritance 104

Methods of inheritance 105

A more practical example 111

Alternative Inheritance Paradigms 115

zInherit 116

xbObjects 120

Summary 124

Chapter 5: JavaScript in the Browser 125

JavaScript in HTML 125

The <script/> tag 125

External file format 126

Inline code versus external files 127

Tag placement 128

To hide or not to hide 129

The <noscript/> tag 130

Changes in XHTML 131

02_579088 ftoc.qxd 3/28/05 11:33 AM Page xi

xii

Contents

JavaScript in SVG 133

Basic SVG 133

The <script/> tag in SVG 134

Tag placement in SVG 135

The Browser Object Model 136

The window object 136

The document object 149

The location object 153

The navigator object 155

The screen object 156

Summary 157

Chapter 6: DOM Basics 159

What Is the DOM? 159

Introduction to XML 159

An API for XML 162

Hierarchy of nodes 163

Language-Specific DOMs 166

DOM Support 167

Using the DOM 167

Accessing relative nodes 167

Checking the node type 169

Dealing with attributes 169

Accessing specific nodes 171

Creating and manipulating nodes 173

DOM HTML Features 178

Attributes as properties 178

Table methods 179

DOM Traversal 182

NodeIterator 182

TreeWalker 187

Detecting DOM Conformance 189

DOM Level 3 191

Summary 191

Chapter 7: Regular Expressions 193

Regular Expression Support 193

Using a RegExp object 194

Extended string methods 195

02_579088 ftoc.qxd 3/28/05 11:33 AM Page xii

xiii

Contents

Simple Patterns 197

Metacharacters 197

Using special characters 197

Character classes 199

Quantifiers 201

Complex Patterns 205

Grouping 205

Backreferences 206

Alternation 207

Non-capturing groups 209

Lookaheads 210

Boundaries 210

Multiline mode 212

Understanding the RegExp Object 212

Instance properties 213

Static properties 214

Common Patterns 216

Validating dates 216

Validating credit cards 218

Validating e-mail addresses 222

Summary 223

Chapter 8: Browser and Operating System Detection 225

The Navigator Object 225

Methods of Browser Detection 226

Object/feature detection 226

User-agent string detection 226

A (Not So) Brief History of the User-Agent String 227

Netscape Navigator 3.0 and Internet Explorer 3.0 227

Netscape Communicator 4.0 and Internet Explorer 4.0 229

Internet Explorer 5.0 and higher 230

Mozilla 230

Opera 232

Safari 233

Epilogue 233

The Browser Detection Script 234

Methodology 234

First Steps 234

Detecting Opera 237

02_579088 ftoc.qxd 3/28/05 11:33 AM Page xiii

Tải ngay đi em, còn do dự, trời tối mất!