JavaScript E5 E6 的继承都是通过什么来实现的?【面试题详解】

今天爱分享给大家带来JavaScript的继承都是通过什么来实现的?【面试题详解】,希望能够帮助到大家。

1.继承是面向对象开发思想的特性之一

2.面试对象的三大特点:封装,继承,多态

3.继承主要分ES5和ES6的继承方式

ES5的继承–主要通过函数实现类

原型链继承

//创建一个父类
function Parent() {
    this.name='jack'

}

Parent.prototype.getName=function() {
    return this.name;
}

//创建一个子类
function Child() {

}

//子类的原型等于父类的实例化对象
Child.prototype=new Parent();

var c1=new Child()


缺点:
1.不能传参
没有解决对象引用问题

借用构造函数继承

//创建一个父类
function Parent(name) {
    this.name=name ||'jack'
    this.colors=['red','green','blue']

}

Parent.prototype.getName=function() {
    return this.name;
}

//创建一个子类
function Child(name) {
    //借用父类来承继实例属性,但不能继承父类方法
    Person.call(this,name)
    
}


缺点:不能继承父类方法

组合继承=原型链继承+借用构造函数继承

//创建一个父类
function Parent(name) {
    this.name=name ||'jack'
    this.colors=['red','green','blue']

}

Parent.prototype.getName=function() {
    return this.name;
}

var p1=new Parent();
p1.getName();


//创建一个子类
function Child(name) {

    Parent.call(this,name)
    
}

Child.prototype=new Parent();

var c1=new Child()
c1.getName()


优点:即能继承父类的原型方法,也能传递参数属性

ES6继承
通过class,extends,super实现 //继承必须要写super

//创建一个父类
class Parent {
   constructor(name) {
        this.name=name ||'jack'
        this.colors=['red','green','blue']
   }

  getName() {
    return this.name;
}

}


//创建一个子类
 class Child extends Parent {

      constructor(name) {
          super(name)  //super就是父类Parent
      }

      getValue() {


      }
    
}


人已赞赏
前端

js原型链是什么【面试题详解】

2020-11-11 13:30:26

前端

Javascript 编码规范有哪些【详细讲解】

2020-11-12 11:17:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧