- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Begin your JavaScript journey with this comprehensive, hands-on guide. You'll learn everything there is to know about professional JavaScript programming, from core language concepts to essential client-side tasks. Build dynamic web applications with step-by-step instructions and expand your knowledge by exploring server-side development and mobile development. Work with advanced language features, write clean and efficient code, and much more!
Highlights include: Reference types Objects Events Forms Web APIs Object-oriented programming Functional programming Client-side applications…mehr
Andere Kunden interessierten sich auch für
- Christian UllenboomJava45,99 €
- Eric FreemanJavaScript-Programmierung von Kopf bis Fuß44,90 €
- Kathy SierraJava von Kopf bis Fuß49,90 €
- Jürgen WolfHTML and CSS45,99 €
- Kathy SierraJava von Kopf bis Fuß49,90 €
- Michael IndenJava Challenge34,90 €
- Jennifer Niederst RobbinsHTML5 - kurz & gut12,90 €
-
-
-
-
-
-
-
-
-
Begin your JavaScript journey with this comprehensive, hands-on guide. You'll learn everything there is to know about professional JavaScript programming, from core language concepts to essential client-side tasks. Build dynamic web applications with step-by-step instructions and expand your knowledge by exploring server-side development and mobile development. Work with advanced language features, write clean and efficient code, and much more!
Highlights include:
Reference types
Objects
Events
Forms
Web APIs
Object-oriented programming
Functional programming
Client-side applications
Server-side applications
Mobile and desktop applications
Highlights:
Reference typesObjectsEventsFormsWeb APIsObject-oriented programming Functional programmingClient-side applicationsServer-side applicationsMobile and desktop applications
Highlights include:
Reference types
Objects
Events
Forms
Web APIs
Object-oriented programming
Functional programming
Client-side applications
Server-side applications
Mobile and desktop applications
Highlights:
Reference typesObjectsEventsFormsWeb APIsObject-oriented programming Functional programmingClient-side applicationsServer-side applicationsMobile and desktop applications
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/22286
- Seitenzahl: 982
- Erscheinungstermin: 6. Januar 2023
- Englisch
- Abmessung: 254mm x 180mm x 50mm
- Gewicht: 1704g
- ISBN-13: 9781493222865
- ISBN-10: 1493222864
- Artikelnr.: 64209708
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/22286
- Seitenzahl: 982
- Erscheinungstermin: 6. Januar 2023
- Englisch
- Abmessung: 254mm x 180mm x 50mm
- Gewicht: 1704g
- ISBN-13: 9781493222865
- ISBN-10: 1493222864
- Artikelnr.: 64209708
... Book Resources ... 25
... Preface ... 27
... Target Audience ... 27
... Structure of the Book ... 28
... How Should I Read This Book? ... 28
... Acknowledgments ... 28
1 ... Basics and Introduction ... 31
1.1 ... Programming Basics ... 31
1.2 ... Introduction to JavaScript ... 46
1.3 ... Summary ... 53
2 ... Getting Started ... 55
2.1 ... Introduction to JavaScript and Web Development ... 55
2.2 ... Integrating JavaScript into a Web Page ... 64
2.3 ... Creating Output ... 76
2.4 ... Summary ... 83
3 ... Language Core ... 85
3.1 ... Storing Values in Variables ... 85
3.2 ... Using the Different Data Types ... 94
3.3 ... Deploying the Different Operators ... 112
3.4 ... Controlling the Flow of a Program ... 132
3.5 ... Creating Reusable Code Blocks ... 168
3.6 ... Responding to Errors and Handling Them Correctly ... 198
3.7 ... Commenting the Source Code ... 216
3.8 ... Debugging the Code ... 216
3.9 ... Summary ... 226
4 ... Working with Reference Types ... 229
4.1 ... Difference between Primitive Data Types and Reference Types ... 229
4.2 ... Encapsulating State and Behavior in Objects ... 236
4.3 ... Working with Arrays ... 270
4.4 ... Extracting Values from Arrays and Objects ... 294
4.5 ... Working with Strings ... 306
4.6 ... Using Maps ... 314
4.7 ... Using Sets ... 321
4.8 ... Other Global Objects ... 325
4.9 ... Working with Regular Expressions ... 329
4.10 ... Functions as Reference Types ... 349
4.11 ... Summary ... 356
5 ... Dynamically Changing Web Pages ... 357
5.1 ... Structure of a Web Page ... 357
5.2 ... Selecting Elements ... 363
5.3 ... Working with Text Nodes ... 390
5.4 ... Working with Elements ... 394
5.5 ... Working with Attributes ... 403
5.6 ... Summary ... 408
6 ... Processing and Triggering Events ... 409
6.1 ... The Concept of Event-Driven Programming ... 409
6.2 ... Responding to Events ... 410
6.3 ... The Different Types of Events ... 426
6.4 ... Understanding and Influencing the Flow of Events ... 439
6.5 ... Programmatically Triggering Events ... 454
6.6 ... Summary ... 456
7 ... Working with Forms ... 459
7.1 ... Accessing Forms and Form Fields ... 459
7.2 ... Programmatically Submitting and Resetting Forms ... 472
7.3 ... Validating Form Inputs ... 475
7.4 ... Summary ... 485
8 ... Controlling Browsers and Reading Browser Information ... 487
8.1 ... The Browser Object Model ... 487
8.2 ... Accessing Window Information ... 489
8.3 ... Accessing Navigation Information of a Currently Open Web Page ... 499
8.4 ... Viewing and Modifying the Browsing History ... 502
8.5 ... Recognizing Browsers and Determining Browser Features ... 508
8.6 ... Accessing Screen Information ... 510
8.7 ... Summary ... 511
9 ... Dynamically Reloading Contents of a Web Page ... 513
9.1 ... The Principle of Ajax ... 513
9.2 ... The XML Format ... 519
9.3 ... The JSON Format ... 524
9.4 ... Making Requests via Ajax ... 529
9.5 ... Summary ... 554
10 ... Simplifying Tasks with jQuery ... 555
10.1 ... Introduction ... 555
10.2 ... Working with the DOM ... 560
10.3 ... Responding to Events ... 576
10.4 ... Creating Ajax Requests ... 584
10.5 ... Summary ... 592
11 ... Dynamically Creating Images and Graphics ... 599
11.1 ... Drawing Images ... 599
11.2 ... Integrating Vector Graphics ... 620
11.3 ... Summary ... 627
12 ... Using Modern Web APIs ... 629
12.1 ... Communicating via JavaScript ... 631
12.2 ... Recognizing Users ... 639
12.3 ... Using the Browser Storage ... 647
12.4 ... Using the Browser Database ... 654
12.5 ... Accessing the File System ... 665
12.6 ... Moving Components of a Web Page ... 673
12.7 ... Parallelizing Tasks ... 678
12.8 ... Determining the Location of Users ... 682
12.9 ... Reading the Battery Level of an End Device ... 688
12.10 ... Outputting Speech and Recognizing Speech ... 691
12.11 ... Creating Animations ... 695
12.12 ... Working with the Command Line ... 699
12.13 ... Developing Multilingual Applications ... 708
12.14 ... Overview of Various Web APIs ... 720
12.15 ... Summary ... 724
13 ... Object-Oriented Programming ... 725
13.1 ... The Principles of Object-Oriented Programming ... 725
13.2 ... Prototypical Object Orientation ... 732
13.3 ... Pseudoclassical Object Orientation ... 739
13.4 ... Object Orientation with Class Syntax ... 745
13.5 ... Summary ... 764
14 ... Functional Programming ... 765
14.1 ... Principles of Functional Programming ... 765
14.2 ... Imperative Programming and Functional Programming ... 767
14.3 ... Summary ... 776
15 ... Correctly Structuring the Source Code ... 779
15.1 ... Avoiding Name Conflicts ... 779
15.2 ... Defining and Using Modules ... 783
15.3 ... Summary ... 797
16 ... Using Asynchronous Programming and Other Advanced Features ... 799
16.1 ... Understanding and Using Asynchronous Programming ... 799
16.2 ... Encapsulating Iteration over Data Structures ... 816
16.3 ... Pausing and Resuming Functions ... 820
16.4 ... Intercepting Access to Objects ... 824
16.5 ... Summary ... 829
17 ... Creating Server-Based Applications with Node.js ... 831
17.1 ... Introduction to Node.js ... 831
17.2 ... Managing Node.js Packages ... 834
17.3 ... Processing and Triggering Events ... 841
17.4 ... Accessing the File System ... 846
17.5 ... Creating a Web Server ... 851
17.6 ... Accessing Databases ... 859
17.7 ... Working with Streams ... 866
17.8 ... Summary ... 874
18 ... Creating Mobile Applications with JavaScript ... 877
18.1 ... The Different Types of Mobile Applications ... 877
18.2 ... Creating Mobile Applications with React Native ... 883
18.3 ... Summary ... 895
19 ... Desktop Applications with JavaScript ... 897
19.1 ... NW.js ... 898
19.2 ... Electron ... 903
19.3 ... Summary ... 908
20 ... Controlling Microcontrollers with JavaScript ... 909
20.1 ... Espruino ... 910
20.2 ... Tessel ... 916
20.3 ... BeagleBone Black ... 921
20.4 ... Arduino ... 924
20.5 ... Cylon.js ... 927
20.6 ... Summary ... 929
21 ... Establishing a Professional Development Process ... 931
21.1 ... Automating Tasks ... 931
21.2 ... Automated Testing of Source Code ... 936
21.3 ... Source Code Version Management ... 949
21.4 ... Summary ... 965
... The Author ... 967
... Index ... 969
... Preface ... 27
... Target Audience ... 27
... Structure of the Book ... 28
... How Should I Read This Book? ... 28
... Acknowledgments ... 28
1 ... Basics and Introduction ... 31
1.1 ... Programming Basics ... 31
1.2 ... Introduction to JavaScript ... 46
1.3 ... Summary ... 53
2 ... Getting Started ... 55
2.1 ... Introduction to JavaScript and Web Development ... 55
2.2 ... Integrating JavaScript into a Web Page ... 64
2.3 ... Creating Output ... 76
2.4 ... Summary ... 83
3 ... Language Core ... 85
3.1 ... Storing Values in Variables ... 85
3.2 ... Using the Different Data Types ... 94
3.3 ... Deploying the Different Operators ... 112
3.4 ... Controlling the Flow of a Program ... 132
3.5 ... Creating Reusable Code Blocks ... 168
3.6 ... Responding to Errors and Handling Them Correctly ... 198
3.7 ... Commenting the Source Code ... 216
3.8 ... Debugging the Code ... 216
3.9 ... Summary ... 226
4 ... Working with Reference Types ... 229
4.1 ... Difference between Primitive Data Types and Reference Types ... 229
4.2 ... Encapsulating State and Behavior in Objects ... 236
4.3 ... Working with Arrays ... 270
4.4 ... Extracting Values from Arrays and Objects ... 294
4.5 ... Working with Strings ... 306
4.6 ... Using Maps ... 314
4.7 ... Using Sets ... 321
4.8 ... Other Global Objects ... 325
4.9 ... Working with Regular Expressions ... 329
4.10 ... Functions as Reference Types ... 349
4.11 ... Summary ... 356
5 ... Dynamically Changing Web Pages ... 357
5.1 ... Structure of a Web Page ... 357
5.2 ... Selecting Elements ... 363
5.3 ... Working with Text Nodes ... 390
5.4 ... Working with Elements ... 394
5.5 ... Working with Attributes ... 403
5.6 ... Summary ... 408
6 ... Processing and Triggering Events ... 409
6.1 ... The Concept of Event-Driven Programming ... 409
6.2 ... Responding to Events ... 410
6.3 ... The Different Types of Events ... 426
6.4 ... Understanding and Influencing the Flow of Events ... 439
6.5 ... Programmatically Triggering Events ... 454
6.6 ... Summary ... 456
7 ... Working with Forms ... 459
7.1 ... Accessing Forms and Form Fields ... 459
7.2 ... Programmatically Submitting and Resetting Forms ... 472
7.3 ... Validating Form Inputs ... 475
7.4 ... Summary ... 485
8 ... Controlling Browsers and Reading Browser Information ... 487
8.1 ... The Browser Object Model ... 487
8.2 ... Accessing Window Information ... 489
8.3 ... Accessing Navigation Information of a Currently Open Web Page ... 499
8.4 ... Viewing and Modifying the Browsing History ... 502
8.5 ... Recognizing Browsers and Determining Browser Features ... 508
8.6 ... Accessing Screen Information ... 510
8.7 ... Summary ... 511
9 ... Dynamically Reloading Contents of a Web Page ... 513
9.1 ... The Principle of Ajax ... 513
9.2 ... The XML Format ... 519
9.3 ... The JSON Format ... 524
9.4 ... Making Requests via Ajax ... 529
9.5 ... Summary ... 554
10 ... Simplifying Tasks with jQuery ... 555
10.1 ... Introduction ... 555
10.2 ... Working with the DOM ... 560
10.3 ... Responding to Events ... 576
10.4 ... Creating Ajax Requests ... 584
10.5 ... Summary ... 592
11 ... Dynamically Creating Images and Graphics ... 599
11.1 ... Drawing Images ... 599
11.2 ... Integrating Vector Graphics ... 620
11.3 ... Summary ... 627
12 ... Using Modern Web APIs ... 629
12.1 ... Communicating via JavaScript ... 631
12.2 ... Recognizing Users ... 639
12.3 ... Using the Browser Storage ... 647
12.4 ... Using the Browser Database ... 654
12.5 ... Accessing the File System ... 665
12.6 ... Moving Components of a Web Page ... 673
12.7 ... Parallelizing Tasks ... 678
12.8 ... Determining the Location of Users ... 682
12.9 ... Reading the Battery Level of an End Device ... 688
12.10 ... Outputting Speech and Recognizing Speech ... 691
12.11 ... Creating Animations ... 695
12.12 ... Working with the Command Line ... 699
12.13 ... Developing Multilingual Applications ... 708
12.14 ... Overview of Various Web APIs ... 720
12.15 ... Summary ... 724
13 ... Object-Oriented Programming ... 725
13.1 ... The Principles of Object-Oriented Programming ... 725
13.2 ... Prototypical Object Orientation ... 732
13.3 ... Pseudoclassical Object Orientation ... 739
13.4 ... Object Orientation with Class Syntax ... 745
13.5 ... Summary ... 764
14 ... Functional Programming ... 765
14.1 ... Principles of Functional Programming ... 765
14.2 ... Imperative Programming and Functional Programming ... 767
14.3 ... Summary ... 776
15 ... Correctly Structuring the Source Code ... 779
15.1 ... Avoiding Name Conflicts ... 779
15.2 ... Defining and Using Modules ... 783
15.3 ... Summary ... 797
16 ... Using Asynchronous Programming and Other Advanced Features ... 799
16.1 ... Understanding and Using Asynchronous Programming ... 799
16.2 ... Encapsulating Iteration over Data Structures ... 816
16.3 ... Pausing and Resuming Functions ... 820
16.4 ... Intercepting Access to Objects ... 824
16.5 ... Summary ... 829
17 ... Creating Server-Based Applications with Node.js ... 831
17.1 ... Introduction to Node.js ... 831
17.2 ... Managing Node.js Packages ... 834
17.3 ... Processing and Triggering Events ... 841
17.4 ... Accessing the File System ... 846
17.5 ... Creating a Web Server ... 851
17.6 ... Accessing Databases ... 859
17.7 ... Working with Streams ... 866
17.8 ... Summary ... 874
18 ... Creating Mobile Applications with JavaScript ... 877
18.1 ... The Different Types of Mobile Applications ... 877
18.2 ... Creating Mobile Applications with React Native ... 883
18.3 ... Summary ... 895
19 ... Desktop Applications with JavaScript ... 897
19.1 ... NW.js ... 898
19.2 ... Electron ... 903
19.3 ... Summary ... 908
20 ... Controlling Microcontrollers with JavaScript ... 909
20.1 ... Espruino ... 910
20.2 ... Tessel ... 916
20.3 ... BeagleBone Black ... 921
20.4 ... Arduino ... 924
20.5 ... Cylon.js ... 927
20.6 ... Summary ... 929
21 ... Establishing a Professional Development Process ... 931
21.1 ... Automating Tasks ... 931
21.2 ... Automated Testing of Source Code ... 936
21.3 ... Source Code Version Management ... 949
21.4 ... Summary ... 965
... The Author ... 967
... Index ... 969
... Book Resources ... 25
... Preface ... 27
... Target Audience ... 27
... Structure of the Book ... 28
... How Should I Read This Book? ... 28
... Acknowledgments ... 28
1 ... Basics and Introduction ... 31
1.1 ... Programming Basics ... 31
1.2 ... Introduction to JavaScript ... 46
1.3 ... Summary ... 53
2 ... Getting Started ... 55
2.1 ... Introduction to JavaScript and Web Development ... 55
2.2 ... Integrating JavaScript into a Web Page ... 64
2.3 ... Creating Output ... 76
2.4 ... Summary ... 83
3 ... Language Core ... 85
3.1 ... Storing Values in Variables ... 85
3.2 ... Using the Different Data Types ... 94
3.3 ... Deploying the Different Operators ... 112
3.4 ... Controlling the Flow of a Program ... 132
3.5 ... Creating Reusable Code Blocks ... 168
3.6 ... Responding to Errors and Handling Them Correctly ... 198
3.7 ... Commenting the Source Code ... 216
3.8 ... Debugging the Code ... 216
3.9 ... Summary ... 226
4 ... Working with Reference Types ... 229
4.1 ... Difference between Primitive Data Types and Reference Types ... 229
4.2 ... Encapsulating State and Behavior in Objects ... 236
4.3 ... Working with Arrays ... 270
4.4 ... Extracting Values from Arrays and Objects ... 294
4.5 ... Working with Strings ... 306
4.6 ... Using Maps ... 314
4.7 ... Using Sets ... 321
4.8 ... Other Global Objects ... 325
4.9 ... Working with Regular Expressions ... 329
4.10 ... Functions as Reference Types ... 349
4.11 ... Summary ... 356
5 ... Dynamically Changing Web Pages ... 357
5.1 ... Structure of a Web Page ... 357
5.2 ... Selecting Elements ... 363
5.3 ... Working with Text Nodes ... 390
5.4 ... Working with Elements ... 394
5.5 ... Working with Attributes ... 403
5.6 ... Summary ... 408
6 ... Processing and Triggering Events ... 409
6.1 ... The Concept of Event-Driven Programming ... 409
6.2 ... Responding to Events ... 410
6.3 ... The Different Types of Events ... 426
6.4 ... Understanding and Influencing the Flow of Events ... 439
6.5 ... Programmatically Triggering Events ... 454
6.6 ... Summary ... 456
7 ... Working with Forms ... 459
7.1 ... Accessing Forms and Form Fields ... 459
7.2 ... Programmatically Submitting and Resetting Forms ... 472
7.3 ... Validating Form Inputs ... 475
7.4 ... Summary ... 485
8 ... Controlling Browsers and Reading Browser Information ... 487
8.1 ... The Browser Object Model ... 487
8.2 ... Accessing Window Information ... 489
8.3 ... Accessing Navigation Information of a Currently Open Web Page ... 499
8.4 ... Viewing and Modifying the Browsing History ... 502
8.5 ... Recognizing Browsers and Determining Browser Features ... 508
8.6 ... Accessing Screen Information ... 510
8.7 ... Summary ... 511
9 ... Dynamically Reloading Contents of a Web Page ... 513
9.1 ... The Principle of Ajax ... 513
9.2 ... The XML Format ... 519
9.3 ... The JSON Format ... 524
9.4 ... Making Requests via Ajax ... 529
9.5 ... Summary ... 554
10 ... Simplifying Tasks with jQuery ... 555
10.1 ... Introduction ... 555
10.2 ... Working with the DOM ... 560
10.3 ... Responding to Events ... 576
10.4 ... Creating Ajax Requests ... 584
10.5 ... Summary ... 592
11 ... Dynamically Creating Images and Graphics ... 599
11.1 ... Drawing Images ... 599
11.2 ... Integrating Vector Graphics ... 620
11.3 ... Summary ... 627
12 ... Using Modern Web APIs ... 629
12.1 ... Communicating via JavaScript ... 631
12.2 ... Recognizing Users ... 639
12.3 ... Using the Browser Storage ... 647
12.4 ... Using the Browser Database ... 654
12.5 ... Accessing the File System ... 665
12.6 ... Moving Components of a Web Page ... 673
12.7 ... Parallelizing Tasks ... 678
12.8 ... Determining the Location of Users ... 682
12.9 ... Reading the Battery Level of an End Device ... 688
12.10 ... Outputting Speech and Recognizing Speech ... 691
12.11 ... Creating Animations ... 695
12.12 ... Working with the Command Line ... 699
12.13 ... Developing Multilingual Applications ... 708
12.14 ... Overview of Various Web APIs ... 720
12.15 ... Summary ... 724
13 ... Object-Oriented Programming ... 725
13.1 ... The Principles of Object-Oriented Programming ... 725
13.2 ... Prototypical Object Orientation ... 732
13.3 ... Pseudoclassical Object Orientation ... 739
13.4 ... Object Orientation with Class Syntax ... 745
13.5 ... Summary ... 764
14 ... Functional Programming ... 765
14.1 ... Principles of Functional Programming ... 765
14.2 ... Imperative Programming and Functional Programming ... 767
14.3 ... Summary ... 776
15 ... Correctly Structuring the Source Code ... 779
15.1 ... Avoiding Name Conflicts ... 779
15.2 ... Defining and Using Modules ... 783
15.3 ... Summary ... 797
16 ... Using Asynchronous Programming and Other Advanced Features ... 799
16.1 ... Understanding and Using Asynchronous Programming ... 799
16.2 ... Encapsulating Iteration over Data Structures ... 816
16.3 ... Pausing and Resuming Functions ... 820
16.4 ... Intercepting Access to Objects ... 824
16.5 ... Summary ... 829
17 ... Creating Server-Based Applications with Node.js ... 831
17.1 ... Introduction to Node.js ... 831
17.2 ... Managing Node.js Packages ... 834
17.3 ... Processing and Triggering Events ... 841
17.4 ... Accessing the File System ... 846
17.5 ... Creating a Web Server ... 851
17.6 ... Accessing Databases ... 859
17.7 ... Working with Streams ... 866
17.8 ... Summary ... 874
18 ... Creating Mobile Applications with JavaScript ... 877
18.1 ... The Different Types of Mobile Applications ... 877
18.2 ... Creating Mobile Applications with React Native ... 883
18.3 ... Summary ... 895
19 ... Desktop Applications with JavaScript ... 897
19.1 ... NW.js ... 898
19.2 ... Electron ... 903
19.3 ... Summary ... 908
20 ... Controlling Microcontrollers with JavaScript ... 909
20.1 ... Espruino ... 910
20.2 ... Tessel ... 916
20.3 ... BeagleBone Black ... 921
20.4 ... Arduino ... 924
20.5 ... Cylon.js ... 927
20.6 ... Summary ... 929
21 ... Establishing a Professional Development Process ... 931
21.1 ... Automating Tasks ... 931
21.2 ... Automated Testing of Source Code ... 936
21.3 ... Source Code Version Management ... 949
21.4 ... Summary ... 965
... The Author ... 967
... Index ... 969
... Preface ... 27
... Target Audience ... 27
... Structure of the Book ... 28
... How Should I Read This Book? ... 28
... Acknowledgments ... 28
1 ... Basics and Introduction ... 31
1.1 ... Programming Basics ... 31
1.2 ... Introduction to JavaScript ... 46
1.3 ... Summary ... 53
2 ... Getting Started ... 55
2.1 ... Introduction to JavaScript and Web Development ... 55
2.2 ... Integrating JavaScript into a Web Page ... 64
2.3 ... Creating Output ... 76
2.4 ... Summary ... 83
3 ... Language Core ... 85
3.1 ... Storing Values in Variables ... 85
3.2 ... Using the Different Data Types ... 94
3.3 ... Deploying the Different Operators ... 112
3.4 ... Controlling the Flow of a Program ... 132
3.5 ... Creating Reusable Code Blocks ... 168
3.6 ... Responding to Errors and Handling Them Correctly ... 198
3.7 ... Commenting the Source Code ... 216
3.8 ... Debugging the Code ... 216
3.9 ... Summary ... 226
4 ... Working with Reference Types ... 229
4.1 ... Difference between Primitive Data Types and Reference Types ... 229
4.2 ... Encapsulating State and Behavior in Objects ... 236
4.3 ... Working with Arrays ... 270
4.4 ... Extracting Values from Arrays and Objects ... 294
4.5 ... Working with Strings ... 306
4.6 ... Using Maps ... 314
4.7 ... Using Sets ... 321
4.8 ... Other Global Objects ... 325
4.9 ... Working with Regular Expressions ... 329
4.10 ... Functions as Reference Types ... 349
4.11 ... Summary ... 356
5 ... Dynamically Changing Web Pages ... 357
5.1 ... Structure of a Web Page ... 357
5.2 ... Selecting Elements ... 363
5.3 ... Working with Text Nodes ... 390
5.4 ... Working with Elements ... 394
5.5 ... Working with Attributes ... 403
5.6 ... Summary ... 408
6 ... Processing and Triggering Events ... 409
6.1 ... The Concept of Event-Driven Programming ... 409
6.2 ... Responding to Events ... 410
6.3 ... The Different Types of Events ... 426
6.4 ... Understanding and Influencing the Flow of Events ... 439
6.5 ... Programmatically Triggering Events ... 454
6.6 ... Summary ... 456
7 ... Working with Forms ... 459
7.1 ... Accessing Forms and Form Fields ... 459
7.2 ... Programmatically Submitting and Resetting Forms ... 472
7.3 ... Validating Form Inputs ... 475
7.4 ... Summary ... 485
8 ... Controlling Browsers and Reading Browser Information ... 487
8.1 ... The Browser Object Model ... 487
8.2 ... Accessing Window Information ... 489
8.3 ... Accessing Navigation Information of a Currently Open Web Page ... 499
8.4 ... Viewing and Modifying the Browsing History ... 502
8.5 ... Recognizing Browsers and Determining Browser Features ... 508
8.6 ... Accessing Screen Information ... 510
8.7 ... Summary ... 511
9 ... Dynamically Reloading Contents of a Web Page ... 513
9.1 ... The Principle of Ajax ... 513
9.2 ... The XML Format ... 519
9.3 ... The JSON Format ... 524
9.4 ... Making Requests via Ajax ... 529
9.5 ... Summary ... 554
10 ... Simplifying Tasks with jQuery ... 555
10.1 ... Introduction ... 555
10.2 ... Working with the DOM ... 560
10.3 ... Responding to Events ... 576
10.4 ... Creating Ajax Requests ... 584
10.5 ... Summary ... 592
11 ... Dynamically Creating Images and Graphics ... 599
11.1 ... Drawing Images ... 599
11.2 ... Integrating Vector Graphics ... 620
11.3 ... Summary ... 627
12 ... Using Modern Web APIs ... 629
12.1 ... Communicating via JavaScript ... 631
12.2 ... Recognizing Users ... 639
12.3 ... Using the Browser Storage ... 647
12.4 ... Using the Browser Database ... 654
12.5 ... Accessing the File System ... 665
12.6 ... Moving Components of a Web Page ... 673
12.7 ... Parallelizing Tasks ... 678
12.8 ... Determining the Location of Users ... 682
12.9 ... Reading the Battery Level of an End Device ... 688
12.10 ... Outputting Speech and Recognizing Speech ... 691
12.11 ... Creating Animations ... 695
12.12 ... Working with the Command Line ... 699
12.13 ... Developing Multilingual Applications ... 708
12.14 ... Overview of Various Web APIs ... 720
12.15 ... Summary ... 724
13 ... Object-Oriented Programming ... 725
13.1 ... The Principles of Object-Oriented Programming ... 725
13.2 ... Prototypical Object Orientation ... 732
13.3 ... Pseudoclassical Object Orientation ... 739
13.4 ... Object Orientation with Class Syntax ... 745
13.5 ... Summary ... 764
14 ... Functional Programming ... 765
14.1 ... Principles of Functional Programming ... 765
14.2 ... Imperative Programming and Functional Programming ... 767
14.3 ... Summary ... 776
15 ... Correctly Structuring the Source Code ... 779
15.1 ... Avoiding Name Conflicts ... 779
15.2 ... Defining and Using Modules ... 783
15.3 ... Summary ... 797
16 ... Using Asynchronous Programming and Other Advanced Features ... 799
16.1 ... Understanding and Using Asynchronous Programming ... 799
16.2 ... Encapsulating Iteration over Data Structures ... 816
16.3 ... Pausing and Resuming Functions ... 820
16.4 ... Intercepting Access to Objects ... 824
16.5 ... Summary ... 829
17 ... Creating Server-Based Applications with Node.js ... 831
17.1 ... Introduction to Node.js ... 831
17.2 ... Managing Node.js Packages ... 834
17.3 ... Processing and Triggering Events ... 841
17.4 ... Accessing the File System ... 846
17.5 ... Creating a Web Server ... 851
17.6 ... Accessing Databases ... 859
17.7 ... Working with Streams ... 866
17.8 ... Summary ... 874
18 ... Creating Mobile Applications with JavaScript ... 877
18.1 ... The Different Types of Mobile Applications ... 877
18.2 ... Creating Mobile Applications with React Native ... 883
18.3 ... Summary ... 895
19 ... Desktop Applications with JavaScript ... 897
19.1 ... NW.js ... 898
19.2 ... Electron ... 903
19.3 ... Summary ... 908
20 ... Controlling Microcontrollers with JavaScript ... 909
20.1 ... Espruino ... 910
20.2 ... Tessel ... 916
20.3 ... BeagleBone Black ... 921
20.4 ... Arduino ... 924
20.5 ... Cylon.js ... 927
20.6 ... Summary ... 929
21 ... Establishing a Professional Development Process ... 931
21.1 ... Automating Tasks ... 931
21.2 ... Automated Testing of Source Code ... 936
21.3 ... Source Code Version Management ... 949
21.4 ... Summary ... 965
... The Author ... 967
... Index ... 969