JS-201-ReactFundamentals
  • Part 0: App Overview
  • Part 1: Intro to React
    • 1.0: Packages Setup
    • 1.1: Project Setup
    • 1.2: React Router Dom
  • Part 2: JavaScript Concepts
    • 2.0: ES6 Overview
    • 2.1: classes
    • 2.2: constructors
    • 2.3: extends
    • 2.4: super
    • 2.5: interpolation
    • 2.6: map
    • 2.7: filter
  • Part 3: Functional Components
    • 3.0: Functional Components Overview
    • 3.1: Calling Functional Components
    • 3.2: Single Element Rule
    • 3.3: Arrow Functions
    • 3.4: Challenge
    • 3.4: Solution
    • 3.5: Challenge 2
    • 3.5: Solution 2
  • Part 4: JSX Challenge
    • 4.1: JSX Overview
    • 4.1: Challenge Answer
    • 4.2: className
  • Part 5: Class Concepts
    • 5.1: State
    • 5.2: setState
    • 5.3: Class Components Challenge
    • 5.4: Class Components Challenge Answer
  • Part 6: Props Starter
    • 6.0: Props Overview
    • 6.1: Props Demo and Challenge 1
    • 6.2: Props Answer 2
    • 6.3: Props Passing Functions and Challenge 2
    • 6.4: Props Answer 2
    • 6.5: External Props and Mapping Components
    • 6.6: PropTypes
  • Part 7: Lifecycle Methods
    • 7.0: Lifecycle Overview
    • 7.1: Lifecycle Methods
    • 7.2: Mounting Methods
    • 7.3: Update Methods
    • 7.4: Unmount Methods
  • Part 8: Apps
    • 1.0 - Small Timer Apps
      • 1.1 - Simple Timer
      • 1.2 - Clock App
      • 1.3 - Stop Watch App
      • 1.4 - Challenge
    • 2.0 - Concept List
      • 2.1 - Concept Data
      • 2.2 - Concept App Component
      • 2.3 - Concept Component
      • 2.4 - Concept List Component
    • 3.0 - NYT
      • 3.1 - NytApp Component
      • 3.2 - Nyt Results
    • 4.0 - The Friend List App
      • 4.1 - Friend List App Component
      • 4.2 - Friend Component
    • 5.0 - Movie Search Application
      • 5.1 - Form Component
      • 5.2 - Form Results Component
      • 5.3 - Styled Components
    • 6.0 - YouTube Api
      • 6.1 - Video Component
      • 6.2 - Video Component
      • 6.3 - Video Component
    • 7.0 - Github Api Application
      • 7.1 - The Users
      • 7.2 - Github API Component
      • 7.3 - Github API Card
      • 7.4 - Github API Card Form
      • 7.5 - Github API Card List
      • 7.6 - Github API Search
      • 7.7 - Github API Challenge
    • 8.0 - Bitcoin Api Application
      • 8.1 - Bitcoin API Setup
      • 8.2 - Bitcoin API Fetch
      • 8.3 - Bitcoin API Line Chart
      • 8.4 - Bitcoin API Fetching Data
      • 8.5 - Bitcoin API Info Box
      • 8.6 - Bitcoin API Completed Code
    • 9.0 - Google Maps Api Challenge
    • 10.0 - Sound Cloud App Challenge
    • 11.0 - VR App Challenge
    • 12.0 - React Native Intro
  • Part 9: Project
  • Part 10: Notes
    • 10.1 - Resources
    • 10.2 - Troubleshooting
Powered by GitBook
On this page
  • extends
  • Practice
  1. Part 2: JavaScript Concepts

2.3: extends

Previous2.2: constructorsNext2.4: super

Last updated 7 years ago

It looks daunting, but it will not take a long time to read. Please go read the mdn docs about .

It's important to start familiarizing yourself with this idea of inheritance in JavaScript. Even though JavaScript is different than other languages with its inheritance, we'll talk in a somewhat classical sense so that you can get an idea of what inheritance is on a fundamental level.

Let's consider the class and add this code to your extends.js file:

//ES6 JS Classes
class User {
    constructor(name){
      this.name = name;
      this.type = "Trial User"
    }
    //Method 1
    greet(){
      console.log('Welcome back,' + this.name);
    }
    //Method 2
    status(){
      console.log('Current status: ' + this.type);
    }
  }

extends

So let's say we wanted to make a bunch of different types of users: Trial, Bronze, Admin. Each one of these will have different functions available, but we all want them to have some properties that are similar. We can do this by making a new class that inherits certain properties from another class. We call this parent and child class. It's referred to as inheritance. Another way you might hear it referenced is 'subclass'.

Let's create a subclass that extends the parent class:

//Extends
class TrialUser extends User {
    trialEnding(){
      console.log('Your trial will be ending soon, ' + this.name + '.' + ' Would you like to join our program?');
    }
  }

So, when we use the extends keyword, we are doing something that we, again, call subclassing. This means that the TrialUser class becomes a child of User, and therefore inherits all of its functions and properties.

You should also note that TrialUser has a trialEnding method, something that User won't have. This means that a child class can have its own separate methods.

Let's test this out by making some objects:

//Instance of User class
  var anonDude = new User("Anonymous");
  anonDude.greet();
  anonDude.status();

//Instance of TrialUser class
  var trialUser = new TrialUser("Paul");
  trialUser.greet();
  trialUser.trialEnding();
  trialUser.status();

This is called inheritance. We use extends to indicate that we are creating a new class that will inherit the properties and functions of another class and take on properties of its own. Fairly simple concept.

Practice

Go practice: Make a class called BannedUser. Write a method/function that tells the reason that prints out a message about why they have been banned.

Prototye Inheritance