1. 程式人生 > 其它 >十九、JavaScript繼承

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