小編給大家分享一下JavaScript的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
專注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)工布江達免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。JavaScript,也叫Mocha,LiveScript,JScript,ECMAScript,是世界上最受歡迎的編程語言之一。事實上,世界上每個人的個人電腦上至少安裝了一種JavaScript的解釋器,并且被廣泛地使用著。JavaScript如此受歡迎的原因在于它在萬維網(wǎng)中所扮演的腳本語言的角色。
名字Java這個前綴的暗示使得人們總會把JavaScript和Java聯(lián)系起來,認為JavaScript是Java的一個子集或者是一個功能差于Java的一個版本。似乎JavaScript這個名字就是有意造成一種混淆,而這種混淆帶來了后來的誤解。JavaScript不被解釋成Java,Java就是Java。而JavaScript則是另一種不同的編程語言。
JavaScript的語法和Java相類似,這就像Java和C類似一樣。但是,JavaScript并不是Java的一個子集就像Java不是C的子集。JavaScript在應(yīng)用程序方面比Java(Oak)當(dāng)初所打算的表現(xiàn)地更好。
JavaScript并不是在Java的誕生地——Sun Microsystems公司,被開發(fā)出來的,而是在Netscape(網(wǎng)景)被開發(fā)出來的。它最初被叫做LiveScript,而這個名字并沒有讓人們很迷惑。
Script這個后綴的暗示,說明JavaScript不是一種真正的“編程語言”,作為一門腳本語言和編程語言相比,還是有差距的。但是,這的確是一個專業(yè)化的問題。和C語言相比,JavaScript通過犧牲性能而換取更加豐富的表達能力和動態(tài)性。
披著 C 外衣的 LispJavaScript的類 C 語法,包括花括號和笨重的for語句,使得它看起來更像是一種普通的過程式的語言。這是一種誤導(dǎo),因為和C 或 Java相比,JavaScript 和 函數(shù)式語言——比如 Lisp 和 Scheme,有著更多的相似之處。它用數(shù)組代替列表,用對象代替屬性列表。函數(shù)是第一類型,函數(shù)可以有閉包。你不需要去平衡所有的這些圓括號,就可以使用匿名函數(shù)。
語言類型定型JavaScript最初的設(shè)計是運行在Netscape Navigator上的。它的成功使它事實上成為了所有網(wǎng)頁瀏覽器的標準配置。這就造成了語言類型的定型。可以說,JavaScript就是編程語言中的 George Reeves(注:美國演員,因扮演“超人”出名,導(dǎo)致被定型,而無法接演其他角色)。JavaScript也適用于很多和網(wǎng)頁無關(guān)的應(yīng)用程序。
變動的(語言設(shè)計)目標JavaScript的第一個版本相當(dāng)?shù)娜?。它缺少異常處理、?nèi)部函數(shù)、繼承。就它現(xiàn)在的形式而言,它已經(jīng)是一門完整的面向?qū)ο蟮木幊陶Z言了。但是,針對這門語言的很多觀點都是基于它不成熟的形式而引發(fā)的。
負責(zé)管理這門語言的ECMA委員會正在開發(fā)擴展,這本是出于好意,但是這也加劇了一個更大的問題:版本變得越來越多。而這造成了更多的困擾。
沒有任何編程語言是完美的。JavaScript也有它本身設(shè)計錯誤,比如重載表示相加和附帶類型轉(zhuǎn)換的串連接兩個含義,易錯的with語句也應(yīng)該避免使用。保留字策略過于嚴格。分號的嵌入也是一個巨大的錯誤,正則表達式的符號也是一樣。這些錯誤會導(dǎo)致編程錯誤,同時將語言的設(shè)計作為一個整體質(zhì)疑。幸運地是,這些問題中的很多問題可以用一個非常不錯的 Lint 程序來緩和。
這個語言的設(shè)計整體上是相當(dāng)健全的。令人驚訝地是,ECMAScript委員會似乎對于糾正這些錯誤并不感興趣。也許,他們對創(chuàng)造一個新的語言更感興趣吧。(注:這里應(yīng)該是作者的調(diào)侃語)。
糟糕的實現(xiàn)JavaScript早期的一些實現(xiàn)可謂是錯誤百出。這一點反映在語言上。更糟糕地是,這些實現(xiàn)被嵌入到了更加錯誤百出的web瀏覽器之中。
糟糕的參考書籍幾乎所有關(guān)于JavaScript的書籍都相當(dāng)?shù)卦愀?。它們充滿了錯誤,不恰當(dāng)?shù)睦?,和沒什么幫助的練習(xí)。這門語言中的重要特性被糟糕地解釋,或者被完全忽略。我修訂過很多關(guān)于JavaScript的書籍,但是我只推薦一本:《JavaScript權(quán)威指南(第五版)》——作者:David Flanagan。(作者語:如果你寫了一本很好的書,請給我郵遞一本贈閱本。)
不合格的標準JavaScript的官方規(guī)范是由ECMA出版的。這個官方規(guī)范的質(zhì)量相當(dāng)?shù)牡?。而且難以閱讀和理解。這是一個造成拙劣書籍問題的一個原因,因為作者們無法使用標準文檔來提升他們對語言的理解。ECMA和TC39委員會應(yīng)該為此感到深深地窘迫和不安。
業(yè)余愛好者很多使用JavaScript的人并不是程序員。他們?nèi)狈I(yè)素質(zhì)和編寫優(yōu)秀程序的訓(xùn)練。無論如何,JavaScript擁有如此強大的表現(xiàn)力,以致于他們通過使用JavaScript可以做很多有意義的事情。這就讓JavaScript背上了一個名聲,就是說,JavaScript完全是給業(yè)余人員設(shè)計的語言,它不適合用于專業(yè)編程。其實,事實并非如此。
面向?qū)ο?/strong>JavaScript是面向?qū)ο蟮膯幔克鼡碛袑ο?,它的對象可以包含?shù)據(jù)和處理數(shù)據(jù)的方法。對象中可以包含其他的對象。它沒有類,但是它有構(gòu)造函數(shù),通過構(gòu)造函數(shù)可以做類似于類的操作,包括充當(dāng)類變量和方法的容器。它沒有面向類的繼承,但是它有面向原型的繼承。
創(chuàng)建對象體系的兩個主要方式分別是通過繼承和通過聚合。JavaScript兩個方法都有,但是它的動態(tài)性使得它可以在聚合的基礎(chǔ)上變得更加優(yōu)秀。
一些爭論認為JavaScript不是一門真正的面向?qū)ο?,因為它不支持(提供)信息的隱藏。也就是說,對象不能擁有私有變量和私有方法:所有的成員都是公共的。
但是又有證明顯示,JavaScript中的對象可以有私有變量和私有方法。(注:原文中,作者這里是一個鏈接,介紹關(guān)于對象私有變量和私有方法的文檔)當(dāng)然,很少有人理解這一點,因為JavaScript是世界上最被誤解的編程語言。(注:作者這里使用了一種輕松的調(diào)侃方式)。
一些爭論認為JavaScript不是一門真正的面向?qū)ο螅驗樗恢С掷^承。但是這又被證明JavaScript不僅能支持傳統(tǒng)的繼承還能應(yīng)用其它的代碼復(fù)用模式。(注:原文這里仍然是一個鏈接)
版權(quán)2001年道格拉斯Crockford。版權(quán)所有Wrrrldwide。
以上是“JavaScript的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道!