js继承

原型继承

 

 

 

 

 

 

// super关键字调用父类普通函数

class Father {

  say() {

     return "我是爸爸'

     }

}

 

class Son extends Father {

  say() {

    console.log(super.say())

  }

}

var son = new Son()

son.say()

// 1.继承中,如果实例化子类输入一个方法,先看子类有没有这个方法,如果有就先执行子类的

// 2.继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行能给父类的这个方法,就近原则 

 

// 子类继承父类加法方法,同时 拓展减法方法

class Son {

  constructor(x, y) {

    this.x = x

    this.y = y

  }

  substract() {
    console.log(this.x - this.y)
  }

}

 

var son = new Son(5, 3)
son.substract()

 

// class Son extends Father{

  constructor(x, y) {

    super(x, y)

  }

}

// son.sum()

// 在es6中类没有变量提升,所以必须先定义类,才能通过类实例化对象。类里面的共有的属性和方法一定要加this使用

// constructor里面的this 指向的是 创建的实例对象

 

先来一张

 

原型链继承

function Person(){
    this.name = '小明'
    this.pets = ['小狗', '小猫']
}
Person.prototype.run = function(){
    console.log('跑')
}
// 1.构造父类的实例
var p = new Person
// 2.并设置为子类的原型对象
Student.prototype = p
// 修复constructor指针即可
Student.prototype.constructor = Student


function Student(){
    this.age = 18
}

var stu = new Student
stu.run()
stu.name
console.log(stu.constructor.name)

图解  原型链继承

 

posted @ 2019-02-12 14:52  慕斯undefined  阅读(124)  评论(0编辑  收藏  举报