/**
* 采用中间函数实现JS_原型继承
*/
function Student (params) {
this.name = params.name || 'unnamed'
}
function PrimaryStudent (params) {
Student.call(this, params)
this.age = params.age || 0
}
// 空函数F
function F () {
}
// 把F函数的原型对象指向Student的原型对象
F.prototype = Student.prototype
// 把PrimaryStudent的原型对象指向F对象
PrimaryStudent.prototype = new F()
// 把PrimaryStudent 的构造函数修复为PrimaryStudent
PrimaryStudent.prototype.constuctor = PrimaryStudent
// 继续绑定方法到PrimaryStudent的原型对象上
PrimaryStudent.prototype.getAge = function () {
return this.age
}
var LiuHuiLi = new PrimaryStudent({
name: 'LiuHuiLi',
age: 23
})
console.log(LiuHuiLi.name)
console.log(LiuHuiLi.age)
// 验证继承
console.log(LiuHuiLi instanceof PrimaryStudent)// true
console.log(LiuHuiLi instanceof Student) // true
// 你也可以使用函数将其封装起来,这样方便更多对象实现继承使用
function inherits (Child, Parent) {
var F = function () {}
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constuctor = Child
}
2018-11-18 js原型继承
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 原型链实现继承: 缺点: 1.重写子类的原型 等于 父类的一个实例,(父类的实例属相变成子类的原型属性)如果父类包...
- 1. 什么是 JS 原型链? 2. this 的值到底是什么? 3. JS 的 new 到底是干什么的? 这是 J...
- 原型式继承:其思想是借助原型,可以基于已有的对象创建新的对象,同时还不用创建自定义类型。 可以看到在Object内...