js_组合继承(最常用的继承方式)

<script type="text/javascript">
			//组合继承: 将原型链和借用构造函数的技术组合在一起
			//使用原型链实现对原型方法的继承
			//使用构造函数实现对实例属性的继承
			//js中最常用的继承方式
			
			//super:超类
			function SuperType(name) {
			//超类属性
			//使用构造函数实现对实例属性的继承
				this.name = name;
				this.colors = ['red','blue','green'];
			}
			
			SuperType.prototype.sayName = function() {
			//超类方法
			//使用原型创建函数,以实现函数的复用
				console.log(this.name)
			}
			
			//sub:子类
			function SubType(name,age) {
				
				//继承属性
				//使用call()方法 每次创建之类实例的时候,超类的属性会存一份副本到子类实例中
				//所有子类实例在修改继承的超类属性时,无法影响其他实例
				SuperType.call(this,name);
				this.age = age;
			}
			
			//继承方法
			SubType.prototype = new SuperType();
			//使用原型对超类方法的继承
			SubType.prototype.constructor = SubType;
			//创建子类的方法
			SubType.prototype.sayAge = function() {
				console.log(this.age)
			}
			
			//instance:实例
			const instance1 = new SubType('Nicholas', 29);
			instance1.colors.push('black');
			console.log(instance1.colors);
			instance1.sayName();
			instance1.sayAge();
			
			const instance2 = new SubType('Greg', 27);
			console.log(instance2.colors);
			instance2.sayName();
			instance2.sayAge();
			
			//使用instanceof和isPrototypeOf()识别基于组合继承创建的对象
			console.log(instance1 instanceof SubType);//true
			console.log(instance1 instanceof SuperType);//true
		</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值