十九、JavaScript继承

继承的概念:让一个对象可以访问到另一个对象中的属性和方法

一、构造函数继承

构造函数:本质还是一个函数,是一个专门生成对象的函数,生成的对象有属性属性值,还有函数方法

  • 创建新的构造函数时,有一些属性或者方法,与之前的构造函数相同

  • 为了节约代码,可以从之前的构造函数中,继承属性和方法

  • 对不同的属性和方法,再重新定义

ES5构造函数语法

1 function CreateObj1(name,age){
2   this.name = name;
3   this.age = age;
4 }
5 createObj1.prototype.fun = function(){
6   console.log('我是ES5语法创建的实例化对象')
7 }

ES6的构造函数语法

1 class CreateObj2{
2   constructor(name, age){
3     this.name = name;
4     this.age = age;
5   }
6   fun(){
7     console.log('我是ES6语法创建的实例化对象')
8   }
9 }

二、ES6继承语法

 1 // 1、继承语法
 2 class 子类构造函数名称 extends 父类构造函数名称{}
 3 
 4 // 2、constructor 构造器中,定义参数
 5 // 参数可以是从父级继承来的,也可以是子类自己定义的
 6 // 从父类继承的属性必须用 super(属性) 来定义
 7 // 可以继承父类所有的属性或者一部分属性
 8 
 9 // 3、也可以定义子类的属性和子类的方法
10 
11 // 4、父类的所有方法都会继承

ES5 或者 ES6 先声明一个构造函数

1 // 父类构造函数
2 function CreateObj1(name,age){
3   this.name = name;
4   this.age = age;
5 }
6 CreateObj1.prototype.fun = function(){
7   console.log('我是ES5语法创建的实例化对象')
8 }

继承父类构造函数的属性和方法

 1 // 子继承父
 2 class Son extends CreateObj1{
 3   constructor(name, age, sex){
 4     super(name);
 5     this.age = age;
 6     this.sex = sex;
 7   }
 8 
 9   fun2(){
10     console.log('我是自己的fun')
11   }
12 }
13 
14 const obj1 = new Son( '张三', 18, '男');

 

posted @ 2021-07-18 14:36  大米饭盖饭  阅读(28)  评论(0)    收藏  举报