原型鏈
js與java,c++等基于類的語言不同,js嚴格意義上說并不是完全面向對象的語言,它是基于原型的函數式編程,但是令人意外的是js確實是實現了面向對象的編程思想
es5面向對象
es5定義類語法相對繁瑣,因為我編程入門是從java開始,所以不怎么習慣es5中定義類的方式,定義類時,屬性是寫在構造方法中,而且對屬性賦值之前并沒有顯式聲明屬性,方法是寫在prototype中,js類的繼承也是基于原型的,定義的對象都有一個proto屬性,這就是對象從父類當中繼承的方法
es6面向對象
es6語法中新加入了class關鍵字,構造函數constructor也是顯式聲明定義,類方法不用使用function關鍵字直接以方法名定義,這與傳統面向對象語言語法類似,當然這只是es6提供給我們的語法糖,以class關鍵字定義的類屬性仍在構造函數中,方法仍在原型中,這是和js語言設計相關的,因為他是基于原型的,函數式的,一切對象都是函數