JS中的多种继承方式

本文深入探讨了JavaScript中三种主要的继承方式:原型继承、call继承和寄生组合式继承。原型继承通过设置子类的原型为父类的实例来实现;call继承允许子类继承父类的私有属性,但无法继承共有属性;寄生组合式继承结合了call和原型继承的优点,实现了更完善的继承机制。
摘要由CSDN通过智能技术生成

第一种:原型继承(子类的原型等于父类的实例)

function Parent(){
	this.x = 100
}
Parent.prototype.getX = function(){
	return this.x;
};
function Child(){
	this.y = 200;
}
Child.prototype = new Parent;
Child.prototype.getY = function(){
	return this.y;
};
let c1 = new Child;

// c1.__proto__.xxx = xxx 修改子类原型(原有父类的一个实例)的内容,
// 修改后,对其他子类的实例有影响,但对父类的实例没有影响。
// c1.__proto__.__proto__.xxx = xxx 直接修改父类原型,都会影响

第二种:call继承(只能继承父类私有的,不能继承父类共有的)

function Parent(){
	this.x = 100;
}
Parent.prototype.getX = function(){
	return this.x;
};
function Child(){
	// this => Child的一个实例
	Parent.call(this);
	this.y = 200;
}
Child.prototype.getY = function(){
	return this.y;
};
let c1 = new Child;

第三种:寄生组合式继承(call + )

function Parent(){
	this.x = 100;
}
Parent.prototype.getX = function(){
	return this.x;
};
function Child(){
	Parent.call(this);
	this.y = 200;
}
// Child.prototype.__proto__ = Parent.prototype
// IE不支持__proto__,可以用Object.create
Child.prototype = Object.create(Parent.prototype);
Child.prototype.getY = function(){
	return this.y;
};
let c1 = new Child;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值