JavaScript中有沒有類的概念

      js當然有類的概念,而且它和java一樣,被設計成純粹的面向對象的語言。js是弱類型語言,但這個並不意味着它沒有類的概念。很明顯地,我們經常能看到new Date()、new Array()之類的調用。這不就是類嗎?

 

一、定義類

    那我們如何在js中自定義一個類呢?其實應該換個說法,我們該怎麼獲取一個某種自定義類型的對象。

1

2

3

4

5

6

// 自定義類Class

function Class(){

}

 

// 實例化Class

var clazz = new Class();

     沒錯,上面就是一個自定義類型對象的獲取方式。我們將一個函數視作構造函數,然後配合new關鍵字調用這個函數,它就會返回某一類型的對象。如果我們執行clazz instanceof Class,返回結果就是true,說明clazz確實是Class類的實例。

 

     那麼我就將上面的js代碼翻譯成對應的java代碼以便理解:

1

2

3

4

5

public class Class{

 

}

 

Class clazz = new Class();

與Java一樣,js中所有對象都是默認繼承自Object類的,所以無論是js還是java,執行clazz instanceof Object返回的都是true。

 

二、成員變量

     我們知道,所謂成員變量,是指這個類的實例對象具有哪些屬性。先看看Java中如何定義成員變量:

1

2

3

4

public Class {

    public String name;

    public int length = 0;

}

 

然後對照js代碼

1

2

3

4

function Class(){

    this.name = null;

    this.length = 0;

}

     這裏引出一個this,在js中,簡單來講,this就是指向當前對象,但實際上js中的this並不好理解,這裏也不會試圖講清楚js中this怎麼用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章