类的创建和继承

LiZiheng / 2023-08-24 / 原文

//类的定义
//定义一个动物类
function Animal(name){
    //属性
    this.name=name||"Animal"
    //实例方法
    this.sleep=function(){
        console.log(this.name+'在睡觉')
    }
}
//原型方法
Animal.prototype.eat=function(food){
    console.log(this.name+"正在吃"+food)
}

//类的继承
//原型链继承
function Cat(){}
    Cat.prototype=new Animal()
var cat = new Cat()
cat.sleep()
cat.eat("fish")
//介绍:在这里我们可以看到 new 了一个空对象,这个空对象指向 Animal 并且 Cat.prototype指向了这个空对象,这种就是基于原型链的继承。
//特点:基于原型链,既是父类的实例,也是子类的实例
//缺点:无法实现多继承

//构造继承:使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型)
function Cat(name){
    Animal.call(this)
    this.name=name||"Tom"
}
var cat=new Cat()
cat.sleep()
cat.eat("fish")
//特点:可以实现多继承
//缺点:只能继承父类实例的属性和方法,不能继承原型上的属性和方法。