/**
* 采用中间函数实现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
}
网友评论