2018-11-18 js原型继承

/**
 * 采用中间函数实现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原型继承)