五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > JavaScript精粹讀書筆記(1)

JavaScript精粹讀書筆記(1)

文章來源:365jz.com     點(diǎn)擊數(shù):228    更新時間:2009-10-04 11:12   參與評論

第1章   精華

JavaScript的特性中有一部分特性帶來的麻煩遠(yuǎn)遠(yuǎn)超出它們的價值。其中,一些特性是因?yàn)橐?guī)范很不完善,從而可能導(dǎo)致可移植性的問題;一些特性會導(dǎo)致生成難以理解和修改的代碼;一些特性促使我的代碼風(fēng)格過于復(fù)雜且易于出錯;還有一些特性就是設(shè)計錯誤。有時候語言的設(shè)計者也會犯錯。

大多數(shù)編程語言都有精華部分和雞肋部分。我發(fā)現(xiàn)如果只使用精華部分而避免使用雞肋的部分,我可以成為一個更好的程序員。畢竟,用糟糕的部件怎么可能構(gòu)建出好東西呢?

標(biāo)準(zhǔn)委員會想要移除一門語言中的缺陷部分,這幾乎是不可能的,因?yàn)檫@樣做會損害所有依賴于那些雞肋部分的糟糕程序。除了在已存在的一大堆缺陷上堆積更多的特性,他們通常無能為力。并且新舊特性并不總是能和諧共處,可能從而產(chǎn)生出更多的雞肋部分。

但是,你有權(quán)力定義你自己的子集。你完全可以基于精華部分去編寫更好的程序。JavaScript中雞肋部分的比重超出了預(yù)料。在短到令人吃驚的時間里,它從不存在發(fā)展到全球采用。它從來沒有在實(shí)驗(yàn)室里被試用和打磨。當(dāng)它還非常粗糙時,它就被直接集成到網(wǎng)景的Navigator 2瀏覽器中。隨著JavaTM的小應(yīng)用程序(Java applets)的失敗,JavaScript變成了默認(rèn)的“網(wǎng)頁語言”。作為一門編程語言,JavaScript的流行幾乎完全不受它的質(zhì)量的影響。

好在JavaScript有一些非常精華的部分。JavaScript最本質(zhì)的部分被深深地隱藏著,以至于多年來對它的主流觀點(diǎn)是:JavaScript就是一個丑陋的、沒用的玩具。本書的目的就是要揭示JavaScript中的精華,讓大家知道它是一門杰出的動態(tài)編程語言。

或許只學(xué)習(xí)精華部分的最大好處就是你可以不用考慮雞肋的部分。忘掉不好的模式是非常困難的。這是一個非常痛苦的工作,我們中的大多數(shù)人都會很不愿意面對。有時候,制定語言的子集是為了讓學(xué)生更好的學(xué)習(xí)。但在這里,我制定的JavaScript子集是為了主專業(yè)人員更好的工作。

1.1     為什么要使用JavaScript

JavaScript是一門重要的語言,因?yàn)樗?/span>web瀏覽器的語言。它與瀏覽器的結(jié)合使它成為世界上最流行的編程語言之一。同時,它也是世界上最被輕視的編程語言之一。瀏覽器的API和文檔對象模型(DOM)相當(dāng)糟糕,導(dǎo)致JavaScript遭到不公平的指責(zé)。

JavaScript是最被輕視的語言,因?yàn)樗皇撬^的主流語言。如果你擅長某些主流語言,但卻在一個只支持JavaScript的環(huán)境中編程,那么被迫使用JavaScript確是相當(dāng)令人厭煩的。大多數(shù)人覺得沒必要去先學(xué)好JavaScript,但結(jié)果他們會驚訝地發(fā)現(xiàn),JavaScript跟他們寧愿使用的主流語言有很大不同,而且這些不同至為關(guān)鍵。

JavaScript令人驚異的事情是,在對這門語言沒有太多了解,甚至對編程都沒有太多了解的情況下,你也能用它來完成工作。它是一門擁有極強(qiáng)表達(dá)能力的語言。當(dāng)你知道要做什么時,它甚至能表現(xiàn)得更好。編程是很困難的事情。絕不應(yīng)該在對此一無所知時便開始你的工作。

1.2     分析JavaScript

JavaScript建立在一些非常好的想法和少數(shù)非常壞的想法之上。

那些非常好的想法包括函數(shù)、弱類型、動態(tài)對象和一個富有表現(xiàn)力的字面量表示法。那些壞的想法包括基于全局變量的編程模型。

JavaScript的函數(shù)是(主要)基于詞法作用域(lexical scoping)的頂級對象。JavaScript是第一個成為主流的lambda語言。實(shí)際上,相對Java而言,JavaScriptLispScheme有更多的共同點(diǎn)。它是披著C外衣的Lisp。這使得JavaScript成為一個非常強(qiáng)大的語言。

現(xiàn)今大部分編程語言中都流行要求強(qiáng)類型。其原理在于強(qiáng)類型允許編譯器在編譯時檢測錯誤。我們能越早檢測和修復(fù)錯誤,付出的代價就越小。JavaScript是一門弱類型的語言,所以JavaScript編譯器不能檢測出類型錯誤。另一方面,弱類型其實(shí)是自由的。我們無須建立復(fù)雜的次,我永遠(yuǎn)不用做強(qiáng)制類型轉(zhuǎn)換,也不用疲于應(yīng)付類型系統(tǒng)以得到想要的行為。

JavaScript有非常強(qiáng)大的對象字面量表示法。通過列出對象的組成部分,它們就能簡單地被創(chuàng)建出來。這種表示法產(chǎn)生了流行的數(shù)據(jù)交換格式——JSON。

原型繼承是JavaScript中一個有爭議的特性。JavaScript有一個無類別(class-free)的對象系統(tǒng),在這個系統(tǒng)中,對象直接從其他對象繼承屬性。這真的很強(qiáng)大,但是對那些被訓(xùn)練使用類去創(chuàng)建對象的程序員們來說,原型繼承是一個陌生的概念。如果你嘗試對JavaScript直接應(yīng)用基于類的設(shè)計模式,你將會遭受挫折。但是,如果你學(xué)習(xí)使用JavaScript的原型本質(zhì),那么你的努力將會有所回報。

JavaScript在關(guān)鍵思想的選擇上飽受非議。雖然在大多數(shù)情況下,這些選擇是合適的。但是有一個選擇相當(dāng)糟糕:JavaScript依賴于全局變量來進(jìn)行連接。所有編譯單元的所有頂級變量被撮合到一個被稱為全局對象的公共命名空間中。這是一件糟糕的事情,因?yàn)槿肿兞渴悄Ч恚⑶以?/span>JavaScript中它們是基礎(chǔ)性的。

在少數(shù)情況下,我們不能忽略雞肋的部分。另外還有一些不可避免的糟粕,當(dāng)涉及這些部分時,我們會將它們指出來。如果你想學(xué)習(xí)那些雞肋的部分及如何拙劣地使用它們,請參閱任何其他的JavaScript書籍。

JavaScript是一門有許多差異的語言。它包含很多錯誤和尖銳的邊角(sharp edges),所以你可能會疑惑:“為什么我要使用JavaScript?”有兩個答案。第一個是你沒有選擇。Web已變成一個重要的應(yīng)用開發(fā)平臺,而JavaScript是唯一一門所有瀏覽器都可以識別的語言。很不幸,Java在瀏覽器環(huán)境中失敗了。JavaScript的蓬勃發(fā)展,恰恰說明了JavaScript確有其過人之處。

另一個答案是,盡管JavaScript有缺陷,但是它真的很優(yōu)秀。它既輕量又富有表現(xiàn)力。并且一旦你熟練掌握了它,就會發(fā)現(xiàn)函數(shù)式編程是一件很有趣的事。

但是為了更好地使用這門語言,你必須知道它的局限。我將會無情地揭示它們。不要因此而氣餒。這門語言的精華部分足以彌補(bǔ)它雞肋的不足。

1.3     一個簡單的試驗(yàn)場

如果你有一個Web瀏覽器和任意一個文本編輯器,那么你就有了運(yùn)行JavaScript程序所需要的一切。首先,請創(chuàng)建一個HTML文件,可以命名為program.html

<html>

       <body>

              <pre>

                            <script src="program.js"></script>

              </pre>

       </body>

</html>

接下來,在同一個文件夾內(nèi),創(chuàng)建一個腳本文件,可以命名為program.js

document.writeln('Hello, world!');

下一步,用你的瀏覽器找開你的HTML文件去查看結(jié)果。本書貫徹始終都會用到一個method方法去定義新方法。下面是它的定義:

Function.prototype.method=function(name,func){

         this.prototype[name]=func;

         return this;

}

我會在第4章解釋它。

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評論 (228人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號