要開始討厭 js 了嗎?
從一開始誤入 js 到現在已經過很久了。變化也很大、越來越活絡了,但… 好像沒一開始的喜歡這個語言了。嗯、撇開膩不膩這件事,js 有非常多有趣的東西,其實不太會膩。但、我最近不太喜歡的是,這個語言本身。(<– 是有多任性.. T UT)
接下來、讓我回憶和分析下,也許最後會有個結論…吧?
回顧
早期、大家都不喜歡它,覺得他很難懂、很奇怪,各個 browser 上的情況非常的繁雜,但、其實我在認識了他半年後,還蠻喜歡的。因為是不純的 functional 吧!
對於大家曾經熱烈討論的 oo javascript,也跳進去研究了。因為我很疑惑,明明 js 就比較像 functional,為什摸要 oo,他又是怎摸實作 oo 的、還有大家說可以怎樣怎樣就能實作繼承。在試完得到我想知道的東西的這瞬間,讓我非常想哭、是哀傷,絕對不是感動的。
從那之後、對於 js 的各種 oo 方式,我都覺得噁心。有時候會用、但、覺得心裡很不舒服,雖然不用也可以,但是為了迅速、為了讓人看懂,還是用了。(每次都好想把手剁掉… T UT)
而現在 es6 出了,顯然… class
、 inherit
都被納入標準,但我始終不敢去看當初讓我想傷心的原因,因為一看了、如果不符合期待、我可能再也沒辦法寫 js 了~。
我想、是我不願意接受借用某些技巧,達到某些目的,即使這些技巧背後並不合理。對,也許會讓所有的東西都變得更簡單、更好懂,但我不願意…,我沒有辦法接受它背後的不合理。(好像該談談哪裡讓我覺得不舒服?)
無法接受的 oo js
我必須先聲明,因為覺得噁心,所以、我已經很久沒有注意他這邊的實作是不是跟早期一樣了,都憑印象了歐~。(也許也有記錯的?)
以前的 oo js,是透過 prototype
實作的,後來 coffeescript
可以用跟其他語言類似的方式寫出來,但… 其實實作方式是一樣的。(沒用過 typescript
但… 是一樣的?)
而我不能接受的點在… inherit
。單一層的 class
其實我可以接受。雖然我不喜歡 oo 、但我可以接受。
|
|
以上面為例(語法什摸的先不在意的前提啦~),log parentIns
和 childIns
出來,會發現…
parentIns:
method1
、method2
會被放在prototype
。
childIns:我看過兩種可能性,但、我都無法接受。
Parent 的
method1
、method2
和 Child 的method1_1
、method1_2
混雜在 prototype。123456childIns- prototype- method1- method2- method1_1- method1_2childIns 有兩層 prototype,第一層是
Parent
第二層才是Child
的 method。1234567childIns- prototype- method1- method2- prototype- method1_1- method1_2
如果再加上 instance 的 data 們,那就會更噁心一點、狀況也會再多一些。
這無論哪個都是我不能接受的,也許有人會提出、既然這樣,就把他們調整成尼可以接受的方式就好啦~ 對、可以,但… 會有幾個問題。
- 會比較慢,在 3 層以上的 inherit,因為 js 本來就不適合繼承(我認為啦~) 而且、不管是哪套實作,其實都有效能上的問題。
- 在 Child 要實作 super 的時候有點麻煩。(當然、不只做 super 麻煩啦~ 要認真的寫出一套考慮各種情況的東西、真的、要很認真~ T UT)
再加上、後來有一陣子流行(?) oo ,然後看了各種奇怪的 oo 和繼承,那簡直是災難。雖然、我也試過不少腦殘的的寫法。本質上就是為了 oo 和 inherit 而寫的 js 。
而這些不愉快的回憶,導致我現在看到 class
和 inherit
納入 standard ,其實不太能接受…。(其實、我本來就不太喜歡 new Function() 的寫法啦~) 也不太喜歡 promise,即使真的比較好看(?),但是、還是可以不喜歡的對吧!
結論
我想、如果我一直沒有離開 js 這圈圈,那我一定不會再去認真追究他實作的方式。雖然、真的很好奇吶~!但是、現在有越來越多的 plugins 都用到這樣的寫法,不得不接受啊~!因為這是這語言成長的方向。但是、心中對他的想法,是自己可以決定的。
如同我一直認為、沒有任何一個語言是不必要的存在,因為那是一個群體對世界的看法。但是、個人觀感是可以的喜歡、不喜歡、討厭什摸的。 js 還是有很多新的有趣的地方,是我還沒有拿來玩的,還是蠻讓人喜歡的啦~!所以、再糾結下好了,也許會把他歸類在觀察中。讓我再找到個熟悉好玩的語言在流放它~ w+