女神的闺蜜爱上我2017-06-12 09:32:53
js是基於原型繼承的語言。創作之初參考scheme以函數為一等公民,參考c語言文法,參考self語言的原型繼承,所以它是三者優點的合集;起初叫livescript,當時java很火,公司就給他換了個名字叫JavaScript,其實他跟java沒半毛錢關係。
原型繼承的優點在於可以多重繼承,可以模擬類,但類語言是永遠無法模擬原型的。這就是JavaScript的靈活之處,可以函數式編程,也可以物件導向編程。
PHP中文网2017-06-12 09:32:53
JavaScript中的類別和物件本來就爭議很大,因為其使用的是原型繼承,是透過引用原型鏈上的方法實現的繼承。你所呼叫的物件上的方法,最終都是呼叫的Object.prototype
上面的方法。這些方法即使不使用new
來進行定義,使用物件字面量的方式進行定義,也是可以進行呼叫的。
也就是如果你修改了Object.prototype
上的方法,那麼所有的物件呼叫的該方法都會改變。 JavaScript裡面所有的建構子其實都是用原型繼承的方法fake出來的。即使ES6裡面新加入的class
,本質上也是使用原型繼承的方法實現的。所以還是要去深入了解原型繼承到底是怎麼實現的。