十九、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, '男');