JS的6种 继承方式

JS的6种 继承方式


面向对象编程 3 大特性:

封装、继承、多态

继承属于其中一种,继承 又分为 6种 方式:

  1. 类式继承
  2. 构造函数继承
  3. 组合继承
  4. 原型式继承
  5. 寄生式继承
  6. 寄生组合式继承

一、类式继承


// 父类
function Fth() {
	this.name = ['shimh']
}
Fth.prototype.getName = function() {
	return this.name
}
// 子类
function Son() {}
// 子类继承父类实例子
Son.prototype = new Fth()

/*--------------------使用继承-------------------------*/

_son1 = new Son()
_son2 = new Son()
console.log(_son1.getName()) // ["shimh"]
_son1.name.push('zhangdan')
console.log(_son1.getName()) // ["shimh", "zhangdan"]
console.log(_son2.getName()) // ["shimh", "zhangdan"]

子类成功继承了父类的属性,但是给_son1的name数组添加值,_son2也被添加了

二、构造函数继承

// 构造函数继承
// ---声明父类---
function Super (id) {
	// 引用类型共有属性
	this.me = ['shimh','web','beijing']
	// 值类型共有属性
	this.id = id
}
// 父类声明原型方法
Super.prototype.showBooks = function () {
	console.log(this.me)
}

// ---声明子类---
function Foo (id) {
	// 继承父类
	Super.call(this, id)
}

// 创建第一个子类的实例
var inst1 = new Foo(1)
// 创建第二个子类的实例
var inst2 = new Foo(2)

// ---测试---
inst1.me.push('构造函数')
console.log(inst1.me) // ['shimh','web','beijing','构造函数']
console.log(inst1.id) // 1
console.log(inst2.me) // ['shimh','web','beijing']
console.log(inst2.id) // 2

Super.call(this, id) 这条 语句 是构造函数继承的精华


以上命名标准及编程思路源自《JavaScript 设计模式》
后面会继续更新,敬请期待!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值