




已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
破JavaScript,而后立,趙子東 T+研發(fā)本部,暢捷通信息技術(shù)股份有限公司2013年8月,目錄,1.關(guān)于JavaScript 2.基礎(chǔ) 3.其它 4.推薦閱讀,1.1 關(guān)于JavaScript 始于1995,1995年,Brendan說服Netscape的老板說在netscape中需要一個屬于自己的腳本語言,在考察了Scheme和Java之 后,10天之內(nèi),Brendan實現(xiàn)了JavaScript引擎的基本原型。,1.2 JavaScript引擎,Mozilla SpiderMonkey,第一款JavaScript引擎,由Brendan Eich在Netscape Communications時編寫,用于Mozilla Firefox 1.03.0版本。 Rhino,由Mozilla基金會管理,開放源代碼,完全以Java編寫。 TraceMonkey,基于實時編譯的引擎,其中部份代碼取自Tamarin引擎,用于Mozilla Firefox 3.53.6版本。 JaegerMonkey,德文Jger原意為獵人,結(jié)合追蹤和組合碼技術(shù)大幅提高性能,部分技術(shù)借鑿了V8、JavaScriptCore、WebKit,用于Mozilla Firefox 4.0以上版本。 IonMonkey,可以對JavaScript編譯后的結(jié)果進行優(yōu)化,用于Mozilla Firefox 18.0以上版本。 OdinMonkey,可以對asm.js進行優(yōu)化,用于Mozilla Firefox 22.0以上版本。 Google V8,開放源代碼,由Google丹麥開發(fā),是Google Chrome的一部分。 微軟 Chakra (JScript引擎),中文譯名為查克拉,用于Internet Explorer 9的32位版本1及Internet Explorer 10。 Opera Linear A,用于Opera 4.06.1版本。 Linear B,用于Opera 7.09.2版本。 Futhark,用于Opera 9.510.2版本。 Carakan,由Opera軟件公司編寫,自O(shè)pera10.50版本開始使用。,1.3 JavaScript框架,Jquery Dojo ExtJS Prototype YUI Library Rico script.aculo.us ,1.4.1 開源協(xié)議-BSD,BSD開源協(xié)議是一個給于使用者很大自由的協(xié)議?;旧鲜褂谜呖梢浴睘樗麨椤?可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。但”為所欲為”的前提當你發(fā)布使用了BSD協(xié)議的代碼,或則以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時,需要滿足三個條件:如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議。如果再發(fā)布的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議。不可以用開源代碼的作者/機構(gòu)名字和原來產(chǎn)品的名字做市場推廣。 對 商業(yè)集成很友好的協(xié)議。而很多的公司企業(yè)在選用開源產(chǎn)品的時候都首選BSD協(xié)議,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發(fā)。,1.4.2 開源協(xié)議- Apache Licence,Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議。該協(xié)議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權(quán),同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)。需要滿足的條件也和BSD類似:需要給代碼的用戶一份Apache Licence如果你修改了代碼,需要再被修改的文件中說明。在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標,專利聲明和其他原來作者規(guī)定需要包含的說明。如果再發(fā)布的產(chǎn)品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現(xiàn)為對Apache Licence構(gòu)成更改。Apache Licence也是對商業(yè)應(yīng)用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售。,1.4.3 開源協(xié)議- GPL(1),我們很熟悉的Linux就是采用了GPL。GPL協(xié)議和BSD, Apache Licence等鼓勵代碼重用的許可很不一樣。GPL的出發(fā)點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改后和衍生的代 碼做為閉源的商業(yè)軟件發(fā)布和銷售。這也就是為什么我們能用免費的各種linux,包括商業(yè)公司的linux和linux上各種各樣的由個人,組織,以及商 業(yè)軟件公司開發(fā)的免費軟件了。GPL協(xié)議的主要內(nèi)容是只要在一個軟件中使用(”使用”指類庫引用,修改后的代碼或者衍生代碼)GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議,既必須也是開源和免費。這就是所謂的”傳染性”。GPL協(xié)議的產(chǎn)品作為一個單獨的產(chǎn)品使用沒有任何問題,還可以享受免費的優(yōu)勢。,1.4.3 開源協(xié)議- GPL(2),由于GPL嚴格要求使用了GPL類庫的軟件產(chǎn)品必須使用GPL協(xié)議,對于使用GPL協(xié)議的開源代碼,商業(yè)軟件或者對代碼有保密要求的部門就不適合集成/采用作為類庫和二次開發(fā)的基礎(chǔ)。其它細節(jié)如再發(fā)布的時候需要伴隨GPL協(xié)議等和BSD/Apache等類似。,1.4.4 開源協(xié)議- LGPL,LGPL是GPL的一個為主要為類庫使用設(shè)計的開源協(xié)議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協(xié)議不同。LGPL 允許商業(yè)軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。這使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并 發(fā)布和銷售。但是如果修改LGPL協(xié)議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議。因此LGPL協(xié)議的開源 代碼很適合作為第三方類庫被商業(yè)軟件引用,但不適合希望以LGPL協(xié)議代碼為基礎(chǔ),通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用。 GPL/LGPL都保障原作者的知識產(chǎn)權(quán),避免有人利用開源代碼復制并開發(fā)類似的產(chǎn)品,1.4.5 開源協(xié)議- MIT,MIT是和BSD一樣寬范的許可協(xié)議,作者只想保留版權(quán),而無任何其他了限制.也就是說,你必須在你的發(fā)行版里包含原許可協(xié)議的聲明,無論你是以二進制發(fā)布的還是以源代碼發(fā)布的.,目錄,2.1 程序員困境:底層編碼能力正逐步喪失,按照已有的思路去開發(fā),無需自己動腦、去思考。如果長期在這樣的環(huán)境下工作,并且也沒有在外部進行提升和開闊,多年以后,你會發(fā)現(xiàn)自己處于很可憐的位置在公司內(nèi)部或團隊里聲稱是“專家”,然而不幸地是,你卻不能在市場找到一個與之平等的工作。我們通過編碼謀生,但環(huán)境卻正在摧毀我們這種謀生的能力。,2.2 類型,undefined null boolean Number String = 與=,2.2 類型(2),為什么T+系統(tǒng)的數(shù)值型整數(shù)位+小數(shù)位加起來=15位? 2 52 2.2204516,2.3 作用域,var 與 無var 內(nèi)部屬性scope,2.3 作用域(2),2.3 作用域(3),2.4 和 . 運算符,var o = id: “11111”; Add:function() return 1 o.id o“id”,2.5 閉包,指的是一個擁有許多變量和綁定了這些變量的環(huán)境的表達式(通常是一個函數(shù)),因而這些變量也是該表達式的一部分。 var person=function() var name=“default”; retturn getName:function() return name; Print(); Print(person.getName();,2.6 閉包注意事項,內(nèi)存泄露: /tech/web/2008/5679.asp 上下文環(huán)境(this):,2.7 Class在哪里?,JavaScript原型化繼承的面向?qū)ο竽_本語言,2.8 面向?qū)ο笕齻€特性:封裝、繼承和多態(tài),閉包,var ,prototype,2.9 JSON 與Ajax,序列化的javascript對象 Ajax: Asynchronous JavaScript and XML,2.10 JavaScript響應(yīng),在瀏覽器中,用于執(zhí)行JavaScript和更新用戶界面的進程通常被稱為UI線程。UI線程的工作基于一個簡單的隊列系統(tǒng),任務(wù)會被保存到隊列中知道進程空閑。一旦空閑,隊列中的下一個任務(wù)就會被重新提取出來進行執(zhí)行。這些任務(wù)要么是JavaScript代碼運行,要么就是執(zhí)行UI更新,包括重繪和重排。然而,在這個進程中,每一次輸入都可能導致一個或多個任務(wù)被加入隊列中。,2.10 JavaScript響應(yīng)(2),目錄,1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)自動化技術(shù)及其應(yīng)用前景分析
- 工業(yè)設(shè)計與文化傳承的融合
- 工業(yè)風裝修設(shè)計與施工實戰(zhàn)
- 工作效率與情緒管理技巧
- 工業(yè)設(shè)備節(jié)能減排方案
- 工作效率提升的軟硬件工具選型
- 工廠作業(yè)現(xiàn)場的安全管理策略研究
- 工作報告編寫技巧及范例
- 工廠安全生產(chǎn)標準化建設(shè)與實踐
- 工程測量中的新技術(shù)應(yīng)用
- 2024年商城縣人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- (已壓縮)礦產(chǎn)資源儲量技術(shù)標準解讀300問-1-90
- 霧化吸入療法合理用藥專家共識(2024版)解讀
- 【MOOC】國際貿(mào)易實務(wù)-上海對外經(jīng)貿(mào)大學 中國大學慕課MOOC答案
- 青馬工程培訓班課件
- 專題29 提高創(chuàng)新思維能力-五年(2020-2024)高考政治真題分類匯編(解析版)
- 幼兒園中班彩虹泡泡龍課件
- 藝術(shù)教學課件模板
- 《香包的制作》教學設(shè)計(課比賽教案)()
- 護士中級職稱競聘述職課件
- 2024年北京市普通高中第一次合格性學業(yè)水平考試英語試題
評論
0/150
提交評論