js中继承的简单实现

152 阅读1分钟

不使用class

function animal(color){
    this.color=color
}

function dog(color,name){
    animal.call(this,color)  // 或者 animal.apply(this,arguments)
    this.name=name
}

// 实现dog.prototype.__proto__=animal.prototype

function temp(){}
temp.prototype=animal.prototype
dog.prototype= new temp()

let dog1=new dog('白色','niko')
console.log(dog1)

结果如下:

使用class

class animal{
    constructor(color){
        this.color=color
    }
}

class dog extends animal{
    constructor(color,name){
        super(color)
        this.name=name
    }
}
let dog1=new dog('白色','niko')
console.log(dog1)

和上图结果一致