你不知道的js-混合對象-類

一、類是一種設計模式,許多語言提供了對於面向類軟件設計的原生語法,js中也有相似的語法,可是和其餘語言中的類徹底不一樣。設計模式

二、類意味着複製函數

三、js並不會像類那樣自動建立對象的副本。設計

四、在繼承或者實例化時,js的對象機制並不會自動執行復制行爲,簡單來講,js中只有對象,並不存在能夠被實例化的類。一個對象並不會被複制到其餘對象,他們會被關聯起來。對象

五、混入模式(不管顯事仍是隱式)能夠用來模擬類的複製行爲,可是一般會產生醜陋而且脆弱的語法,好比顯式僞多態,這會讓代碼更加難懂而且難以維護。繼承

顯式混入其實沒有辦法模擬類的複製行爲,由於對象只能複製引用,沒法複製被引用的對象或者函數自己。若是你修改了共享的函數對象,好比添加了一個屬性,父類和子類都會受到影響。軟件

六、總的來講,在js中模擬類是得不償失的,雖然能解決當前的問題,但會有更多隱患語法

相關文章
相關標籤/搜索