原型类似于公共的方法和属性,相同的方法和属性不用反复创建,提高代码的复用和体积。那我们如何使用在本对象中原型上的属性和方法呢,答案是通过原型的继承来实现。原型的继承和改变原型是两个不一样的东西。谨记

  1. function Title(){}
  2. Title.prototype.show = function(){
  3. console.log("Title prototype: show")
  4. }
  5. function Article(){}
  6. Article.prototype = Title.prototype
  7. Article.prototype.constructor = Article
  8. let hd = new Article()
  9. hd.show()//通过原型的继承来实现代码的复用
  10. console.dir(Article)

完整版继承

  1. function Title(name){
  2. this.host = name
  3. }
  4. function Article(name){
  5. Title.call(this,name)
  6. }
  7. Article.prototype = Object.create(Title.prototype,{
  8. "constructor":{
  9. value:Article,
  10. enumerable:false
  11. }
  12. })
  13. let hd = new Article("jack")
  14. console.dir(hd.host)

捕获-3.PNG

对象工厂封装继承

  1. function extend(sub,sup){
  2. sub.prototype = Object.create(sup.prototype)
  3. //或者使用setprototypeof来设置原型
  4. Object.defineProperty(sub.prototype,"constructor",{
  5. value:sub,
  6. enumerable:false
  7. })
  8. }