面向對象與基於對象
幾乎每一個開發人員都有面向對象語言(好比C++、C#、Java)的開發經驗。 在傳統面向對象的語言中,有兩個很是重要的概念 - 類和實例。 類定義了一類事物公共的行爲和方法;而實例則是類的一個具體實現。 咱們還知道,面向對象編程有三個重要的概念 - 封裝、繼承和多態。編程
可是在JavaScript的世界中,全部的這一切特性彷佛都不存在。 由於JavaScript自己不是面向對象的語言,而是基於對象的語言。 這裏面就有一些有趣的特性,好比JavaScript中全部事物都是對象, 包括字符串、數組、日期、數字,甚至是函數,好比下面這個例子:數組
10 |
console.log(add.invokeTimes); |
模擬JavaScript中類和繼承
在面向對象的語言中,咱們使用類來建立一個自定義對象。然而JavaScript中全部事物都是對象,那麼用什麼辦法來建立自定義對象呢?函數
這就須要引入另一個概念 - 原型(prototype),咱們能夠簡單的把prototype看作是一個模版,新建立的自定義對象都是這個模版(prototype)的一個拷貝 (實際上不是拷貝而是連接,只不過這種連接是不可見,給人們的感受好像是拷貝)。spa
讓咱們看一下經過prototype建立自定義對象的一個例子:prototype
02 |
function Person(name, sex) { |