Inheritance

01

"Inheritance" can be used with Objecs and classes

This shows inefficent code creating duplicate code for each instance of each object created

const me = {
    talk(){
        return 'Talking'
    }
}
const you = {
    talk(){
        return 'Talking'
    }
}
me.talk()
you.talk()

02

Instead of adding methods to individual objects add the method to a class and create instances of that class.

class Person {
    talk(){
        return 'talking'
    }
}
const me = new Person()
const you = new Person()
me.talk()
you.talk()

Now the method "inherits" from the talk() method from the Person class

03

We can re-assign a new method to the instance of the Person class, and it will Not change the talk() method within Person

class Person{
    talk(){
        return 'Talking'
    }
}
const me = new Person()
function newMethod(){
    return 'new Method'
}
me.talk = newMethod()
me.talk
Person

04

Remember that including () after a function when assigning it to a variable will only asign the Return Value, if you do that you can not invoke the method on the instance of the class because me.talk will only have the return value 'new Method' from the newMethod function. so invoking the talk() method on the me instance with () will throw an error

class Person{
    talk(){
        return 'Talking'
    }
}
const me = new Person()
function newMethod(){
    return 'new Method'
}
me.talk = newMethod
me.talk()
me.talk = newMethod()
me.talk()
                            

05

If you console the me instance, we used to see that any method from the class would reside in __proto__, but this is now depreciated, see next lesson to continue to and see in modern javascript using [[Prototype]]

06

Notice, Methods are not in the instance itself, they are in the [[Protoype]] of it's parent class Person.

class Person{
talk(){
    return 'Talking'
}
}
const me = new Person()
me
                            

07

But we can add attributes to the instance itself

class Person{
talk(){
    return 'Talking'
}
}
const me = new Person()
me.age = 30
me