Advanced JavaScript ™ Third Edition Chuck Easttom Wordware Publishing, Inc. LibraryofCongressCataloging-in-PublicationData Easttom,Chuck. AdvancedJavaScript/byChuckEasttom.--3rded. p. cm. Includesindex. ISBN-13:978-1-59822-033-9(pbk.) ISBN-10:1-59822-033-0 1. JavaScript(Computerprogramlanguage). I. Title. QA76.73.J39E372007 005.13'3--dc22 2007012641 CIP ©2008,WordwarePublishing,Inc. AllRightsReserved 1100SummitAvenue,Suite102 Plano,Texas75074 Nopartofthisbookmaybereproducedinanyformorby anymeanswithoutpermissioninwritingfrom WordwarePublishing,Inc. PrintedintheUnitedStatesofAmerica ISBN-10:1-59822-033-0 ISBN-13:978-1-59822-033-9 10 9 8 7 6 5 4 3 2 1 0708 JavaScriptisatrademarkofSunMicrosystems,Inc.intheUnitedStatesandothercountries. Otherbrandnamesandproductnamesmentionedinthisbookaretrademarksorservicemarksoftheir respectivecompanies.Anyomissionormisuse(ofanykind)ofservicemarksortrademarksshouldnotbe regardedasintenttoinfringeonthepropertyofothers.Thepublisherrecognizesandrespectsallmarksused bycompanies,manufacturers,anddevelopersasameanstodistinguishtheirproducts. Thisbookissoldasis,withoutwarrantyofanykind,eitherexpressorimplied,respectingthecontentsof thisbookandanydisksorprogramsthatmayaccompanyit,includingbutnotlimitedtoimpliedwarrantiesfor thebook’squality,performance,merchantability,orfitnessforanyparticularpurpose.NeitherWordware Publishing,Inc.noritsdealersordistributorsshallbeliabletothepurchaseroranyotherpersonorentitywith respecttoanyliability,loss,ordamagecausedorallegedtohavebeencauseddirectlyorindirectlybythisbook. AllinquiriesforvolumepurchasesofthisbookshouldbeaddressedtoWordwarePublishing,Inc., attheaboveaddress.Telephoneinquiriesmaybemadebycalling: (972)423-0090 ContentsSummary (cid:1) iii Contents Summary Chapter1 IntroductiontoJavaScript . . . . . . . . . . . . . . . . . . . . . . . 1 Chapter2 GettingStartedwithJavaScript. . . . . . . . . . . . . . . . . . . . 13 Chapter3 JavaScriptFundamentals . . . . . . . . . . . . . . . . . . . . . . . 20 Chapter4 Object-OrientedProgramming . . . . . . . . . . . . . . . . . . . . 47 Chapter5 FunctionsandVariableScope. . . . . . . . . . . . . . . . . . . . . 53 Chapter6 UtilizingJavaScriptOperators . . . . . . . . . . . . . . . . . . . . 67 Chapter7 EventsinJavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Chapter8 BuildingandExtendingObjects. . . . . . . . . . . . . . . . . . . 104 Chapter9 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Chapter10 TimeandDateinJavaScript . . . . . . . . . . . . . . . . . . . . . 150 Chapter11 JavaScriptMath. . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Chapter12 HandlingStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Chapter13 TheDocumentObjectModel. . . . . . . . . . . . . . . . . . . . . 233 Chapter14 TheDocumentObjectModel(Continued). . . . . . . . . . . . . . 240 Chapter15 UtilizingtheStatusBar. . . . . . . . . . . . . . . . . . . . . . . . 247 Chapter16 URLsandJavaScript . . . . . . . . . . . . . . . . . . . . . . . . . 265 Chapter17 TheDocumentObjectandtheHistoryList . . . . . . . . . . . . . 289 Chapter18 Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Chapter19 Links,Anchors,andImageMaps . . . . . . . . . . . . . . . . . . 372 Chapter20 ImplementingCookies . . . . . . . . . . . . . . . . . . . . . . . . 382 Chapter21 ImagesandGraphics. . . . . . . . . . . . . . . . . . . . . . . . . 414 Chapter22 Frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 Chapter23 EvaluationandCompilation . . . . . . . . . . . . . . . . . . . . . 508 Chapter24 JavaScriptAuthoringTools . . . . . . . . . . . . . . . . . . . . . 516 Chapter25 Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 Chapter26 StyleSheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 Chapter27 SecurityIssues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 Chapter28 DebuggingScripts . . . . . . . . . . . . . . . . . . . . . . . . . . 545 iv (cid:1) ContentsSummary AppendixA HTMLPrimer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 AppendixB JavaScriptObjectSpecificationSyntax. . . . . . . . . . . . . . . 560 AppendixC ASCIICharacterSet. . . . . . . . . . . . . . . . . . . . . . . . . . 578 AppendixD OnlineResources. . . . . . . . . . . . . . . . . . . . . . . . . . . 582 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584 Contents (cid:1) v Contents Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii Chapter1 Introduction to JavaScript . . . . . . . . . . . . . . . . . 1 TheWorldWideWeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CompetitionontheWeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 ExtendingHTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Plug-ins,Applets,andASP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Plug-ins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 JavaApplets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ASPandASP.Net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 WhatIsJavaScript? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 WhoCanBenefitfromJavaScript?. . . . . . . . . . . . . . . . . . . . . . . . . . . 6 TheHistoryofJavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 JavaScriptinaBrowser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Client-sideJavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 BrowserObjects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 WhatCanJavaScriptDo?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ImageEffects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Banners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 FormValidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 JavaScriptandJava. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 JavaScriptResemblesJava. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 JavaScriptDiffersfromJava. . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Chapter2 Getting Started with JavaScript. . . . . . . . . . . . . . 13 EssentialAuthoringTools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 ChoosingaTextEditor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 ChoosingaBrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 BasicJavaScriptStructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 The<SCRIPT>Tag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 InternalScripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ExternalScripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 EventHandlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 ShortStatements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 HidingtheScriptforOldBrowsers. . . . . . . . . . . . . . . . . . . . . . . . 18 ImportantNotesaboutJavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 vi (cid:1) Contents Chapter3 JavaScript Fundamentals . . . . . . . . . . . . . . . . . 20 “Building”aScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 DataTypesinJavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 TheValueNull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Identifiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 NamingConventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 VariableDeclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 JavaScriptEntities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 TypeConversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 MixingStringsandNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 IntegerLiterals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 DecimalIntegers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 OctalIntegers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 HexadecimalIntegers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 ConvertingfromDecimaltoOtherBases. . . . . . . . . . . . . . . . . . . 28 ConvertingfromaSpecifiedBasetoDecimal. . . . . . . . . . . . . . . . . 29 ReferringtoOctalandHexadecimalIntegers. . . . . . . . . . . . . . . . . 29 Floating-PointLiterals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 BooleanLiterals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 StringLiterals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Operators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 MultipleStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 NestedStatements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 EvaluatingExpressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 TestingEvaluation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 FunctionDefinition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 CallingFunctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ControlStructures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 DialogBoxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 AlertBoxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 ConfirmBoxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 PromptBoxes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 ConditionalStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 ifStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 elseStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Nestedif-elseStatements . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 LoopStatements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 forStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 whileStatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Chapter4 Object-Oriented Programming. . . . . . . . . . . . . . . 47 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 UsingtheArrayNotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Contents (cid:1) vii ObjectOrientedvs.ObjectBased . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Chapter5 Functions and Variable Scope. . . . . . . . . . . . . . . 53 VariableScopeandStorageClass. . . . . . . . . . . . . . . . . . . . . . . . . . . 53 VariableScope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 VariableStorageClass. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 FunctionParameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 WhatAreFunctions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 DefiningandCallingFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . 60 FunctionParameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 UsingtheargumentsArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 CreatingFunctionswithDefaultArguments. . . . . . . . . . . . . . . . . . . 62 ReturningaValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Recursion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Chapter6 Utilizing JavaScript Operators . . . . . . . . . . . . . . 67 OperatorCategories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 MathematicalOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Addition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Multiplication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Division. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Modulus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 TheNonexistentIntegralDivisionOperator. . . . . . . . . . . . . . . . . . . 69 Increment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Decrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Negation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 StringConcatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 BitwiseOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 BitwiseAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 BitwiseOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 BitwiseXOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 BitwiseNOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 ShiftOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 LeftShift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 RightShift. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Zero-fillRightShift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 AssignmentOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 RelationalOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 EqualityandInequality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Short-CircuitLogicalOperators . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 LogicalOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 LogicalAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 LogicalNOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 TestingEqualityforFloating-PointNumbers . . . . . . . . . . . . . . . . . . 85 MoreLogicalOperators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 ConditionalOperator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 CommaOperator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 DataTypeOperator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 VoidOperator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 OperatorPrecedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 viii (cid:1) Contents Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 SideEffects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Chapter7 Events in JavaScript. . . . . . . . . . . . . . . . . . . . 91 Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 EventHandlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 onLoadandonUnload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 onError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 EmulatingEventsviaMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 CallingEventHandlersExplicitly. . . . . . . . . . . . . . . . . . . . . . . . . . 101 CancelingEvents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Chapter8 Building and Extending Objects . . . . . . . . . . . . . 104 CreatingInstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 ConstructorFunctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 DefiningObjectProperties. . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 NestedObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 DefiningMethods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 CreatingObjects—AnExample . . . . . . . . . . . . . . . . . . . . . . . . . 113 PrototypeandObjectExtensions . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Chapter9 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 WhatIsanArray? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 SomeHistory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 CreatingSimpleArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 ReferringtoanArray’sElements. . . . . . . . . . . . . . . . . . . . . . . . . . 120 CreatingDenseArrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 ArrayTypes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 ArrayProperties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 ArrayMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 chop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 grep() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 join(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 pop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 push() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 reverse(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 shift() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 sort(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 splice(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 split(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 unshift() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 TheargumentsArray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 MultidimensionalArrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 CreationwithaSingleConstructorFunction. . . . . . . . . . . . . . . . . . 144 CreationwithoutaConstructorFunction. . . . . . . . . . . . . . . . . . . . 145 AssociativeArrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 PopulatinganAssociativeArray. . . . . . . . . . . . . . . . . . . . . . . . . 147 SplittingaStringintoanAssociativeArray. . . . . . . . . . . . . . . . . . . 148 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Contents (cid:1) ix Chapter10 Time and Date in JavaScript. . . . . . . . . . . . . . . 150 TheDateObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 CreatingaDateInstance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 ParametersoftheDateConstructor. . . . . . . . . . . . . . . . . . . . . . . 151 DateNumericConventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 DateMethodCategories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 ThegetMethods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 getYear(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 getMonth() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 getDate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 getDay(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 getHours(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 getMinutes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 getSeconds() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 getTimezoneOffset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 getTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 ThesetMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 setYear(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 setMonth() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 setDate(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 setHours(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 setMinutes(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 setSeconds(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 setTime() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 ThetoMethods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 toGMTString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 toLocaleString(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 TheparseMethods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 parse(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 UTC() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Time-RelatedMethodsofOtherObjects . . . . . . . . . . . . . . . . . . . . . . 163 setTimeout() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 clearTimeout() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 TimeandDateExamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 ASimpleDigitalClock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 MonthlyCalendar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 getTime(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 leapYear(year) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 getDays(month,year) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 getMonthName(month). . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 setCal(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 drawCal(firstDay,lastDate,date,monthName,year) . . . . . . . . . . . . 176 RandomQuotes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Chapter11 JavaScript Math . . . . . . . . . . . . . . . . . . . . . 182 MathinJavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 TheMathObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 LN2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 LN10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 LOG2E. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184