JavaScript实现继承的几种方式

1.原型链继承->将父类的实例作为子类的原型
父类

function Animal(name)
{	
	this.name=name||"simple";
	this.sleep=function()
	{
	    console.log(this.name + '正在睡觉!');
	}
}
//原型方法
Animal.prototype.eat=function(food)
{
console.log(this.name+"eat"+food)
}

//原型链继承
function Cat(){}
Cat.prototype=new Animal();
Cat.prototype.name="cat";
var cat=new Cat()
console.log(cat.name) //cat 
cat.eat('fish'); //cateatafish
cat.sleep();cat正在睡觉
console.log(cat instanceof Animal); //true 
console.log(cat instanceof Cat); //true

2.构造继承->在子类构造函数改变子类构造函数的this指向父类构造函数

function Cat(name)
{
	Animal.call(this);
	//此时的this就指向父类的this了
	//实现了子类继承父类
	this.name=name||"simple"
}
//这个实例是子类的实例
/*但是只能继承父类实例的属性和方法,不能继承父类原型的属性和方法*/

3.实例继承

function Cat(name)
{
	var instance=new Animal();
	instance.name=name||"simple";
	return instance;
}
//这个实例是父类的实例

4.组合继承

function Cat(name)
{
	Animal.call(this);
	this.name=name||"simple";
}
Cat.prototype=new Animal()
//弥补了构造继承的缺陷 现在既可以继承实例的方法,也可以继承原型的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值