Book Image

Object-Oriented JavaScript - Third Edition

By : Ved Antani, Stoyan STEFANOV
5 (1)
Book Image

Object-Oriented JavaScript - Third Edition

5 (1)
By: Ved Antani, Stoyan STEFANOV

Overview of this book

JavaScript is an object-oriented programming language that is used for website development. Web pages developed today currently follow a paradigm that has three clearly distinguishable parts: content (HTML), presentation (CSS), and behavior (JavaScript). JavaScript is one important pillar in this paradigm, and is responsible for the running of the web pages. This book will take your JavaScript skills to a new level of sophistication and get you prepared for your journey through professional web development. Updated for ES6, this book covers everything you will need to unleash the power of object-oriented programming in JavaScript while building professional web applications. The book begins with the basics of object-oriented programming in JavaScript and then gradually progresses to cover functions, objects, and prototypes, and how these concepts can be used to make your programs cleaner, more maintainable, faster, and compatible with other programs/libraries. By the end of the book, you will have learned how to incorporate object-oriented programming in your web development workflow to build professional JavaScript applications.
Table of Contents (25 chapters)
Object-Oriented JavaScript - Third Edition
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface
Built-in Functions
Regular Expressions

Preface

JavaScript has emerged as one of the most robust and versatile programming language around. Modern JavaScript embraces a vast array of time-tested and cutting edge features. Several of these features are slowly giving shape to the next generation of web and server platforms. ES6 introduces very important language constructs, such as promises, classes, arrow functions, and several, much anticipated features. This book takes a detailed look at the language constructs and their practical uses. This book doesn't assume any prior knowledge of JavaScript and works from the ground up to give you a thorough understanding of the language. People who know the language will still find it useful and informative. For people who already know JavaScript and are familiar with ES5 syntax, this book will be a very useful primer for ES6 features.

What this book covers

Chapter 1, Object-Oriented JavaScript, talks briefly about the history, present, and future of JavaScript, and then moves on to explore the basics of object-oriented programming (OOP) in general. You will then learn how to set up your training environment (Firebug) in order to dive into the language on your own, using the book examples as a base. 

Chapter 2, Primitive Data Types, Arrays, Loops, and Conditions, discusses the language basics-variables, data types, primitive data types, arrays, loops, and conditionals.

Chapter 3, Functions, covers functions that JavaScript uses, and here you will learn to master them all. You will also learn about the scope of variables and JavaScript's built-in functions. An interesting, but often misunderstood, feature of the language-closures-is demystified at the end of the chapter.

Chapter 4, Objects, talks about objects, how to work with properties and methods, and the various ways to create your objects. This chapter also talks about built-in objects such as Array, Function, Boolean, Number, and String.

Chapter 5, ES6 Iterators and Generators, introduces the most anticipated features of ES6, Iterators and Generators. With this knowledge, you will proceed to take a detailed look at the enhanced collections constructs.

Chapter 6, Prototype, is dedicated to the all-important concept of prototypes in JavaScript. It also explains how the prototype chain works, hasOwnProperty(), and some gotchas of prototypes.

Chapter 7, Inheritance, discusses how inheritance works. This chapter also talks about a method to create subclasses like other classic languages.

Chapter 8, Classes and Modules, shows that ES6 introduces important syntactical features that makes it easier to write classical object-oriented programming constructs. ES6 class syntax wraps the slightly complex syntax of ES5. ES6 also has full language support for modules. This chapter goes into the details of the classes and module constructs introduced in ES6.

Chapter 9, Promises and Proxies, explains that JavaScript has always been a language with strong support for asynchronous programming. Up until ES5, writing asynchronous programs meant you needed to rely on callbacks-sometimes resulting in callback hell.  ES6 promises are a much-awaited feature introduced in the language. Promises provide a much cleaner way to write asynchronous programs in ES6. Proxies are used to define custom behavior to some of the fundamental operations. This chapter looks at practical uses of both promises and proxies in ES6.

Chapter 10, The Browser Environment, is dedicated to browsers. This chapter also covers BOM (Browser Object Model), DOM (W3C's Document Object Model), browser events, and AJAX.

Chapter 11, Coding and Design Patterns, dives into various unique JavaScript coding patterns, as well as several language-independent design patterns, translated to JavaScript from the Book of Four, the most influential work of software design patterns. This chapter also discusses JSON.

Chapter 12, Testing and Debugging, talks about how Modern JavaScript is equipped with tools that support Test Driven Development and Behavior Driven Development. Jasmine is one of the most popular tools available at the moment. This chapter discusses TDD and BDD using Jasmine as the framework.

Chapter 13, Reactive Programming and React, explains that with the advent of ES6, several radical ideas are taking shape. Reactive programming takes a very different approach to how we manage change of states using data flows. React, however, is a framework focusing on the View part of MVC. This chapter discusses these two ideas.

Appendix A, Reserved Words, lists the reserved words in JavaScript.

Appendix B, Built-in Functions, is a reference of built-in JavaScript functions together with sample uses.

Appendix C, Built-in Objects, is a reference that provides details and examples of the use of every method and property of every built-in object in JavaScript.

Appendix D, Regular Expressions, is a regular expressions pattern reference.

Appendix E, Answers to Exercise Questions, has solutions for all the exercises mentioned at the end of the chapters.

What you need for this book

You need a modern browser-Google Chrome or Firefox are recommended, and an optional Node.js setup. Most of the code in this book can be executed in http://babeljs.io/repl/ or http://jsbin.com/. To edit JavaScript, you can use any text editor of your choice.

Who this book is for

This book is for anyone who is starting to learn JavaScript, or who knows JavaScript but isn't very good at the object-oriented part of it. This book can be a useful primer for ES6 if you are already familiar with the ES5 features of the language.

Conventions

In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.

Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: "The Triangle constructor takes three point objects and assigns them to this.points (its own collection of points)."

A block of code is set as follows:

    function sum(a, b) { 
    var c = a + b;
    return c;
    }

Any command-line input or output is written as follows:

  mkdir babel_test
  cd babel_test && npm init
  npm install --save-dev babel-cli

New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "In order to bring up the console in Chrome or Safari, right-click anywhere on a page and select Inspect Element . The additional window that shows up is the Web Inspector feature. Select the Console tab, and you're ready to go".

Note

Warnings or important notes appear in a box like this.

Note

Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book-what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail [email protected], and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books-maybe a mistake in the text or the code-we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy

Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at [email protected] with a link to the suspected pirated material.

We appreciate your help in protecting our authors and our ability to bring you valuable content.

Questions

If you have a problem with any aspect of this book, you can contact us at [email protected], and we will do our best to address the problem.