|
英文原文:For modern development Javascript indeed is a s?h?i?t? dissapointing language
我很抱歉,但 Crockford 就是堅持這么寫的(I’m sorry, but the Crockford arguments do not cut it.)。
Javascript 在很多方面都爛透了,而且還極其無趣。我就納了悶了,大家為啥都義無返顧、群情激奮的跳進 Node 學習的大軍里。是!Node 是比 Ruby 快,Node 是基于事件模型處理的,但讓我無法理解的是——一些人動不動就想把自己的程序用 Node 重構一下,過過腦子行嗎!
Javascript 的繼承,深拷貝問題,不是定義一個新的 ECMA 標準就能解決的,不是套個漂亮的語法外殼(比如 CoffeeScript)就能搞定的,不是用 require 實現個標準化或者引入 classes 就可以萬事大吉的,ECMA 語言里不是有個引入 classes 的 ActionScript 嗎!那玩意跟 Javascript 一樣屎,只要大家繼續用它,php 框架的現狀就是 JS 的未來——一堆一堆的人前赴后繼,日以繼夜的為這坨屎一樣的語言搭框架、寫工具。
我來說一下為什么 Javascript 糟糕,當然了,它也有好的方面。 但是問題就是太不實用,比如說原型繼承(prototypal inheritance)就限制頗多——因為這玩意說白了就是 function override,還有就是那句:“萬物皆 function” 也是相當的廢柴——因為 function 不是一個對象,也不能當做數據結構來承載數據。
其實真正的吐槽才剛剛開始,隨便列幾個吧:
JS 的調用屬性
看這個屎一樣的設計,回顧過去,咱們很難苛責語言的設計人員,因為它們可能處于性能考慮。再者,如果不習慣消息-傳遞機制的語言的話,你會覺得“怎么一些屬性可以被調用而另外一些就不可以呢”!
哈希對象對于 stable 鍵不可用
對象和哈希的混合不是一個好點子,因為它違反了對象可以擁有 metadata 的前提,metadata 允許我們建立基本類型系統或者至少各種類型的 introspection。
函數對象對于類型系統不可用,因為一個對象不攜帶任何類型信息
這可是大事,Ruby 的世界里也是這樣,感覺所有的東西都在像鴨子一樣快樂的嘎嘎叫。我們經常用 Object$class 來獲取對象信息,下面是給 HTML 元素加樣式的標準的流程:
<div class='<%= model.class %>' id='<%= [model.class, model.id].join %>' >…
it知識庫:對于現代開發來說,Javascript就是一種垃圾語言,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。