Vue學習筆記之Vue的面向對象

 

0x00 準備工做

JavaScript 語言中,生成實例對象的傳統方法是經過構造函數。程序員

複製代碼
 function Animal(name,age){ this.name = name; this.age = age; } Animal.prototype.showName = function(){ console.log(this.name); console.log(this.age); } var a = new Animal('小黃',5); a.showName();
複製代碼

上面這種寫法跟傳統的面嚮對象語言(好比 C++ 和 Java)差別很大,很容易讓新學習這門語言的程序員感到困惑。編程

ES6 提供了更接近傳統語言的寫法,引入了 Class(類)這個概念,做爲對象的模板。經過class關鍵字,能夠定義類。函數

基本上,ES6 的class能夠看做只是一個語法糖,它的絕大部分功能,ES5 均可以作到,新的class寫法只是讓對象原型的寫法更加清晰、更像面向對象編程的語法而已。上面的代碼用 ES6 的class改寫,就是下面這樣post

複製代碼
 class Animal{ // 構造器 當你建立實例以後 constructor()方法會馬上調用 一般這個方法初始化對象的屬性
 constructor(name,age){ this.name = name; this.age = age; } showName(){ console.log(this.name); } }  var a2 = new Animal('點點',3); 
複製代碼

上面代碼定義了一個「類」,能夠看到裏面有一個constructor方法,這就是構造方法,而this關鍵字則表明實例對象。也就是說,ES5 的構造函數Animal,對應 ES6 的Animal類的構造方法。學習

Animal類除了構造方法,還定義了一個showName方法。注意,定義「類」的方法的時候,前面不須要加上function這個關鍵字,直接把函數定義放進去了就能夠了。另外,方法之間不須要逗號分隔,加了會報錯。this

ES6 的類,徹底能夠看做構造函數的另外一種寫法。spa

console.log(Animal2===Animal2.prototype.constructor);//true

上面代碼表示,類自己就指向了類的構造函數。prototype

使用的時候,也是直接對類使用new命令,跟構造函數的用法徹底一致。code

 

0x01 Constructor方法

constructor方法是類的默認方法,經過new命令生成對象實例時,自動調用該方法。一個類必須有constructor方法,若是沒有顯式定義,一個空的constructor方法會被默認添加。對象

複製代碼
class Animal { } // 等同於
class Animal { constructor() {} }
複製代碼

上面代碼中,定義了一個空的類Point,JavaScript 引擎會自動爲它添加一個空的constructor方法。

相關文章
相關標籤/搜索