首頁 >web前端 >js教程 >歸納整理ES6中的class類知識點

歸納整理ES6中的class類知識點

WBOY
WBOY轉載
2022-08-08 15:09:081762瀏覽

本篇文章為大家帶來了關於javascript的相關知識,E其中主要介紹了關於class類的相關問題,ES6引入了class類這個概念,透過class關鍵字可以定義類,這就是更符合我們平時所理解的物件導向的語言,下面一起來看一下,希望對大家有幫助。

歸納整理ES6中的class類知識點

【相關推薦:javascript影片教學web前端

##class簡介

傳統的JS只有物件的概念,沒有class類別的概念,因為JS是基於原型的物件導向語言,原型物件特徵就是將屬性全部共享給新物件。

ES6引入了class類這個概念,透過class關鍵字可以定義類,這就是更符合我們平常所理解的物件導向的語言。

class Person{   //定义一个名为Person的类
    // 构造函数,用来接受参数
    constructor(x,y){
        this.x = x;    //this代表的是实例对象
        this.y = y;
    }
    todoSome(){  //这是个类的方法,不需要加function,有多个方法也不用逗号隔开
        alert(this.x + "的年龄是" +this.y+"岁");
    }
}
export default  Person;

靜態方法和靜態屬性

靜態方法和靜態屬性,是使用

static關鍵字的屬性和方法

靜態方法
static classMethod(){
		console.log('123456')
	}

    靜態方法不會被子類別繼承,子類別不能呼叫
  • 靜態方法中的this,指向的是類別class,不是類別的實例。因此
  • 靜態方法只能透過類別名稱來呼叫,不能透過實例來呼叫##
    let p = new Point();
    p.classMethod();  // 报错

靜態屬性
static prop = 1 ;  // 静态属性

靜態屬性不能被子類別繼承,子類別不能呼叫
  • 靜態屬性只能透過類別名稱來調用,不能透過類別的實例來調
  • class繼承extends

class可以用過extends關鍵字來繼承
  • ES6繼承,子類別建構子中必須使用super()。因為ES6繼承是先將父類別實例物件的屬性和方法,加到this上面,然後再呼叫子類別的建構子修改這個this
  • 如果子類別沒有定義constructor方法,super()會默認新增上
  • 子類別會繼承父類別的方法和屬性,但是靜態方法和屬性必須透過子類別的類別名稱來呼叫
  • import classtest from "./classtest";  //先引入父类
    class Man extends classtest{
        constructor(x,y){   //构造函数尽量与父类参数保持一致
            super();   //利用super()关键字,这个必须放在子类构造函数中的第一位置
            this.x = x;
            this.y = y;
        }
    }
    export default  Man;
  • class的取值函數getter和存值函數setter

getter、setter就是給class的屬性讀值、傳值用的。

取值函數getter和存值函數setter可自訂賦值和取值行為,當一個屬性只有getter沒有setter的時候,這個屬性就是只讀屬性,不能賦值,第一次初始化也不行。

如果變數定義為私有的(定義在類別的花括號外面),就可以只使用getter不使用setter。

let data=[1,2,3,4];  //放在类外面,属于私有变量,可以只读取
class Person{
    // 构造函数
    constructor(x,y){
        this.x = x;
        this.y = y;
    }
    get x(){
        console.log('获得name');
        return this._name;    //get读取属性
    }
    set x(x){
        console.log("设置name");  
        this._name=x;   //set给属性赋值
    }
    get data(){
        return data;   //只读属性,属性返回的值只能是私有变量
    }
    todoSome(){
        alert(this.x + "的年龄是" +this.y+"岁");
    }
    static dayin(){
        alert("dayin");
    }
}
export default  Person;

如何使用:

 var test= new this.$myutils.classtest('haha','18');
  test.x="haha3";   //改变了实例化时候的x的值
  test.todoSome();  //输出:haha3的年龄是18岁。这里就已经不是实例化时候的haha了
  console.log(test.data);   //结果:打印[1,2,3,4]
注意事項:

1、在類別中定義方法時候,不可以給方法加上function關鍵字,因為JS中建構函數是用function定義的,兩個隔開。

2、所有方法不要用逗號隔開,否則會報錯。

【相關推薦:

javascript影片教學

web前端

以上是歸納整理ES6中的class類知識點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除