如何写js中的继承

原型继承

js中有原型的概念, 通过原型我们可以实现继承.
定义一个函数为animal, 在其原型上定义一个sayHello函数. 并生成一个新对象dog.

function Animal(name){
    this.name = name
}
Animal.prototype.sayHello = function() {
    console.log('hello')

}
var dog = new Animal('dog')

console.log(dog)
//{name: "dog"}

打印dog返现dog是一个对象, 它并没有其他方法. 但是我们可以在dog对象上使用sayHello函数

dog.sayHello()
//hello

当普通函数加上new时, 就变成了构造函数. 构造函数的prototype属性指向其原型.
new+构造函数生成一个实例对象, 这个实例对象有一个__proto__属性也指向原型.
当实例对象调用某一个方法时, 会在自身属性中查找, 若没有则通过__proto__属性向原型查找.
这样通过原型链的方式我们可以实现继承.

class继承

class继承和原型继承类似.

class Animal {
    constructor(){
        console.log('这是class的构造函数')
    }
    sayHello(){
        console.log('hello')
    }
}

class Dog extends Animal {
    constructor(name){
        super()
        this.name = name
    }
}

var dog = new Dog('dog')
console.log(dog)
//{name: "dog"}

dog.sayHello()
//'hello'

class中的除了contructor表示构造函数, 其他一律为原型中的属性. Dog通过extends关键字继承自Animal. dog是Dog的实例, 当dog没有sayHello方法时, 变回向其父类寻找该方法.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值