天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

還原JavaScript的真實歷史

  本文發布于2007-12-13

  問題

  JavaScript真的繼承自Cmm嗎?

  JavaScript與Java有多少關系?

  JavaScirpt最初的設計是怎樣的?

  在許多資料,JavaScript的語源被追溯到一種名為Cmm的語言。同樣是在這一溯源的過程中,人們發現“其實”JavaScript不是第一種網頁中的腳本語言。現在一些所謂“公認”的情況是這樣的:

  大概在1992年,一家稱作Nombas的公司開始開發一種叫做C減減(C-minus-minus,簡稱Cmm)的嵌入式腳本語言。這個腳本語言捆綁在一個叫做CEnvi的共享軟件產品中,當NETscape Navigator嶄露頭角時,Nombas開發了一個可以嵌入網頁中的CEnvi的版本。這些早期的試驗稱為Espresso Page(濃咖啡般的頁面),它們代表了第一個在萬維網上使用的客戶端腳本語言。而Nombas絲毫沒有料到它的理念將會成為因特網的一塊重要基石。

  然而,這是真實的情況嗎?運行在NETscape中的第一個“客戶端腳本語言”真的是Cmm的濃咖啡?

  又或者真的象Wiki中記述的那樣,Brendan Eich在JavaScript引用了Cmm語言特性?

  不是的。盡管上述的資料看起來出自權威:《Javascript高級程序設計》(Professional JavaScript for Web Developers),但他的確錯了。

  JavaScript與Cmm在語言特性上無關

  為了弄明白JavaScript與Cmm的關系,我大概用了三天的時間,從網上收集了多個Cmm的版本。這些版本既包括早期的Cmm(1993年),也包括在JavaScript初創時的Cmm(1995年),還包括在后來,Cmm更名為ScriptEase的第一個版本(3.0, 1997年),作為參考,我還考察了它在服務器端的版本。

  遺憾的是,在1996年之前,在Cmm的2.x的最后一個版本之前,Cmm都并不是一個面向對象(或基于對象)的語言,Cmm正如它自己的名字所說的一樣:是一個精減版的C,而不是C++或以C++為基礎的變種。所以Cmm中有“結構”,也有#include等,整個的體系是參考C語言的。

  由于JavaScript在基本的語法特性(例如大括號、語句關鍵字等)上參考了C,在對象系統上(例如“.”作為成員存取)上參考了Java,因此在一定程度上Cmm與JavaScript存在相似性——主要是與共同借鑒自C的部分。但是除了這些之外,JavaScript與Cmm在語言特性上完全無關。

  JavaScript最初的基本設計是怎樣的?

  我需要補充一下JavaScript初始設計目標。Brendan Eich在1995年4月前后被NETscape公司雇傭,目標是完成一套語言系統。最初的設計里,該語言系統是為NETscape的LiveWire戰略服務的。該戰略彰顯了NETscape當年的勃勃野心,它是NETscape公司的一個通用的Web開發環境,包括NETscape Enterprise、FastTrack Server等。LiveWire架構也成為所有Web服務器提供SP(Server Page)技術的藍本。例如在IIS中的ASP,以及更早期的IDC(InterNET Database Connect)。

  這種技術在服務器端通過內嵌于網頁的LiveScript代碼,使用名為database、DbPool、Cursor等的一組對象來存取LiveWire Database。作為整套的解決方案,NETscape在客戶端網頁上也提供LiveScript腳本語言的支持,除了訪問Array、String等這些內置對象之外,也可以訪問window等瀏覽器對象。

  不過并不清楚的是:LiveScript最初的設計是先考慮服務器應用,還是先考慮網頁中應用。但這些應用環境的決策上的變化,時間僅僅限制在1995年4月至1995年10月之前,因為當月發布的NETscape 2. 0 beta1已經包含了腳本支持。

  在NETscape 2.0 beta1中并不支持<script>標簽,而只是在form表單元素中支持了onclick這類的事件。這時的腳本代碼是用在HTML標簽屬性上的,也就是類似于:<input type="button">

  很快,三周之后NETscape就發布了beta2。這個版本正式地支持了<script>標簽,并可以解析該標簽中的代碼、標識符,開始具備調用函數、表達式運算等能力。這個版本已經具備了JavaScript 1.0的基本性質。

  ——什么?能調用函數、表達式運算就是JavaScript 1.0的基本性質了?

  是的,差不多了。相比起來,JavaScript 1.0只是在這樣的基礎上加上了一套對象系統而已。在隨后發布的beta 3中,函數可以作為構造器使用,可以創建出用戶自己的對象來了。再后來window等全局對象被加了進來,再把“當前網頁”中的表單元素等影射成可編程對象,JavaScript 1.0就完成了。

  僅僅如此而已。在JavaScript 1.0的時代,既沒有“原型繼承”,也沒有“函數式編程”——甚至連匿名函數也沒有支持,所以下面的代碼就足夠讓瀏覽器掛掉了:

var func = function() {} 

it知識庫還原JavaScript的真實歷史,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲中文字幕无码一久久区 | 日韩一区二区天海翼 | 亚洲欲色欲色XXXXX在线AV | 菠萝蜜国际一区麻豆 | 99久久精品免费看国产一区二区三区 | 亚洲欧美综合视频 | 亚洲精品在线播放视频 | 麻豆国产精品AV色拍综合 | 精品手机在线1卡二卡3卡四卡 | 波多久久亚洲精品AV无码 | 国产亚洲精品线视频在线 | 97成人免费视频 | free高跟丝袜秘书hd | 国产午夜精品理论片在线 | 超碰公开在线caopon | 成人a视频在线观看 | 菠萝菠萝蜜免费播放高清 | 香蕉久久夜色精品国产小说 | 麻豆国产99在线中文 | 国内精品人妻无码久久久影院蜜桃 | 97久久无码精品AV | 一本道高清不卡v免费费 | 中国xxxxxxxxx孕交| 97超碰在线视频 免费 | 欲奴第一季在线观看全集 | 成人网络电视破解版 | 一个人在线观看的视频 | 热热久久超碰精品中文字幕 | 年轻的女教师2017韩国在线看 | 内射后入在线观看一区 | 午夜人妻理论片天堂影院 | 男人J桶女人P视频无遮挡网站 | 国产午夜精品鲁丝片 | 亚洲精品高清中文字幕完整版 | 免费啪视频观试看视频 | 欧美乱码卡一卡二卡四卡免费 | 国产视频www| 禁室培欲在线视频免费观看 | 97视频免费观看2区 97视频免费观看 | 伊人天天躁夜夜躁狠狠 | 亚洲精品国产在线网站 |