JS继承

70 阅读1分钟

基于原型的继承

先看代码

function Person(name, age) {
    this.name = name;
    this.age = age
}
Person.prototype.name = function () {
    return this.name
}
Person.prototype.age = function () {
    return this.age
}
Person.prototype.sayHi = function () {
    return console.log('你好,我叫' + this.name)
}
let person = new Person('frank', 18)
person.name === 'frank'
person.age === 18
person.sayHi()

let person2 = new Person('jack', 19)
person2.name === 'jack'
person2.age === 19
person2.sayHi()

这里的父对象是Person,父对象的原型prototype上赋予了3个属性,当我们new一个新对象时,父对象的属性就继承给new出来的那个新对象上

基于class的继承

一样先看代码

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age
    }
    name() {
        return this.name
    }
    age() {
        return this.age
    }
    sayHi() {
        return console.log('你好,我叫' + this.name)
    }
}

class Coder extends Person{
    coding(){
        console.log('coding')
    }
}

let coder = new Coder('frank', 18)
coder.name === 'frank'
coder.age === 18
coder.sayHi()

需要注意的就是,使用class必须有constructor,如果没有,默认为空