“Web開發中的JavaScript設計藝術”聊天實錄

聊天主題:Web開發中的JavaScript設計藝術
聊天時間2005127日星期四下午200—330

聊天嘉賓:Lostinet(戴立堅)、wch3116(萬常華)

 

詳細聊天實錄:

[劉如鴻]:

大家好,我是《msdn開發精選》的技術主編劉如鴻。首先感謝大家的到來,今天我們邀請了在JavaScript開發中享有盛名的Lostinetwch3116到場和我們一同探討JavaScript設計中的種種考慮。

[2005-1-27 ]

[劉如鴻]:

以下是他們的個人介紹:

Lostinet(戴立堅)2004年微軟最有價值的專家,擅長於腳本開發和基於ASP.NET企業應用解決方案實現,主要作品爲RaneCBMLostinet.Web控件集,CuteEditor 4CuteChat等等。可以通過http://blog.joycode.com/lostinet/ 訪問他的個人Blog。現爲無業人士,在深圳學英語和減肥。

[2005-1-27 ]

[劉如鴻]:

wch3116(萬常華) 擅長腳本開發及B/S系統架構設計,JSVM 項目負責人。主要作品,JSVMXpRPCWDB。可以通過[email protected]與他聯繫。現供職於中興通訊/IT中心,致力於企業應用平臺技術整合與應用框架設計。

[2005-1-27 ]

[劉如鴻]: 現在我宣佈一下聊天規則

1。聊天200正式開始,330結束

2. 2:002:30以嘉賓的討論爲主

3. 2:30以後可以自由提問,大家如果有問題,可以通過提交給futurelight,他會將問題提交給嘉賓

4。請不要在聊天室討論一些和主題無關的話題

謝謝大家的支持和配合

[2005-1-27 ]

嘉賓[戴立堅]:

大家好..我是戴立堅. 很高興和萬常華來到CSDN上做JS聊天的嘉賓. 很感謝大家來參與這次的討論.

[2005-1-27 ]

嘉賓[萬常華]:

大家好,非常榮幸有這個機會能與大家在一起交流一下

[2005-1-27 ]

[劉如鴻]:

雖然一開始JavaScript只是針對腳本設計的,但是發展到現在,已經初步具備了面向對象的功能,兩位嘉賓如何看待JavaScript的面向對象呢?

[2005-1-27 ]

[劉如鴻]:

從我個人的理解,基於JavaScript的面向對象本質上來說可以是Prototype-Based的繼承實現方式,因爲任何的實現嚴格意義來說只是採用了父對象的原型

[2005-1-27 ]

嘉賓[萬常華]:

OO 設計思想是 計算機語言向 現實模型靠攏 的必然發展過程,js作爲一門腳本語言,也要引入這種設計思想,當然,目前因爲語言本身的問題,把js作爲一種面向對象的語言來做程序設計還有一些缺陷

[2005-1-27 ]

嘉賓[戴立堅]:

關於面向對象 , 我覺得現在JS主要作用是操作其他對象. 例如 DHTML 中的window/document/element . 或者是其他環境中的對象 例如用 ActiveXObject 創建出來的對象或MozillaXMLHttpRequest . 但是 JS 本身帶的面向對象的功能很弱 . 適合做一些簡單的類庫. 但很難達到大規模的類庫的應用.

[2005-1-27 ]

[劉如鴻]:

那麼我請問,JavaScript在面向對象中還存在哪些缺陷呢?這些的缺陷是否可以通過一些手段去繞過去

[2005-1-27 ]

嘉賓[戴立堅]:

腳本本身的語法功能很有限 . 並沒有 class 這樣的功能. 我比較看好的是 Mozilla __defineGetter__/__defineSetter__ , FlashActionScript中的addProperty的功能 . 這些功能爲面向對象提供了一定的方便 .

[2005-1-27 ]

嘉賓[萬常華]:

js是一門基於對象的語言,在基於webjs實際開發中,如果引入一些規範,我們基本上可以很少地方需要考慮他與面向對象之間的區別

[2005-1-27 ]

嘉賓[戴立堅]:

當然 , MSBehavior(HTC)是實現面向對象的很使用的技術 . 這個技術可以定義屬性與事件等等 .

[2005-1-27 ]

[劉如鴻]:

戴立堅,我想下面會有些人不太贊同你的觀點,有人會舉例bindows就是一個很龐大的類庫,萬常華實現的JSVM也是一個比較大的類庫

[2005-1-27 ]

[劉如鴻]:

戴立堅,我想下面會有些人不太贊同你的觀點,有人會舉例bindows就是一個很龐大的類庫,萬常華實現的JSVM也是一個比較大的類庫

[2005-1-27 ]

嘉賓[戴立堅]:

而在面向對象中 ,JS最缺陷的就是無法在語法上直接實現 override(虛擬方法) 的功能. 雖然可以用其他方法來模擬 , 但是寫法的特殊和不直觀,很影響JS做面向對象的應用.

[2005-1-27 ]

嘉賓[戴立堅]:

是的 . 我很欣賞 Bindows JSVM . 這些都做得很好 . 如果JS能在語法上提供一些更直接的支持 , 那麼我覺得它們會發展得更好的.

[2005-1-27 ]

[劉如鴻]:

那麼對於JScript.NET,你們是如何看待呢?作爲.NET環境下的一個半動態語言,除了擁有JavasScript的全部功能之外,還能夠利用.NET Framework,按照微軟的文檔,JScript.NET是第一個實現了ECMA 262 Edition 3的語言,同時也引入了class,package等等關鍵字

[2005-1-27 ]

嘉賓[戴立堅]:

如果 IE 等環境支持JScript.Net就更好啦. 可惜現在IE不支持 < script language=jscript.net >.. 所以JScript.Net目前的應用也只在.Net開發中 . 但是做.Net的開發,C#VB.NET這兩個更強大的語言 , JScript.Net 的地位真的不上不下.

[2005-1-27 ]

嘉賓[萬常華]:

js能否成,主要在於是否有一個良好的代碼組織結構和規範

[2005-1-27 ]

嘉賓[戴立堅]:

js 是否可對遠程URL發送 XMLHttpRequest請求?

可以的. 但是要考慮以下情況: 操作系統是否支持 . 運行JS的環境是否允許你訪問該URL. 一般的應用是網站在客戶端通過XmlHttp/XmlHttpRequest來訪問"本站"的內容 . 這個IEMOZILLA都支持.

[2005-1-27 ]

嘉賓[萬常華]:

Jscript.Net 由於運行環境的限制,導致他在web端沒有用武之地,我想MS

對此他是有考慮的

[2005-1-27 ]

嘉賓[戴立堅]:

同意萬常華. 我想當網絡速度不在是庫下載速度的障礙時,基於JS的庫會得到大規模的應用.

[2005-1-27 ]

[劉如鴻]:

很多人問我過這樣的問題,JavaScript裏面有真正對象嗎?那麼他是如何實現的,你們的理解呢?所謂繼承呢?是在一個怎樣的角度去說的

[2005-1-27 ]

[劉如鴻]:初步的面向對象是不是應該說成基於對象?

是的,基於對象和基於原型的面向對象,這是一個很有意思的東西

[2005-1-27 ]

嘉賓[萬常華]:

通過一些手段,在本地建立一個cache機制,可以一定程度上解決 網絡帶寬帶來的一些瓶頸

[2005-1-27 ]

[劉如鴻]:

就我個人而言,我不是特別贊成太依賴於腳本,如果我們將腳本虛擬機的運行環境擴充而且能夠跨平臺的話,那麼這個時候腳本的優勢纔會更加明顯,而目前,不論IE還是Mozilla,腳本解釋器的功能還是極其有限的,對於簡單的應用,它可以很好的解決,對於複雜的應用,可能好耗費比傳統語言更多的精力才能夠解決。那麼從這個角度來說,我們是不是不要太過度使用腳本

[2005-1-27 ]

嘉賓[戴立堅]: javascript vbscript 的區別

基本上是語法上,提供的內置對象/函數的不同. vbscript支持Class但不支持繼承. vbscript只適合microsoft或兼容的平臺

[2005-1-27 ]

嘉賓[萬常華]:

js 的另外一個應用領域是 hta - Html Appliction 作爲最接近web的一種應用程序,我們如果撇開 跨域完全 性能方面的考慮,就開發方式和運行方式而言基本上是一致的。

[2005-1-27 ]

嘉賓[萬常華]: javascript 能不能讀取遠程xml文件的數據

javascript 藉助一控件比如 xmlhttp xmldom 可以實現讀取遠程xml,但這裏有一個跨域安全限制的問題

[2005-1-27 ]

嘉賓[戴立堅]: javascript 能不能讀取遠程xml文件的數據

這個是可以的 . 請參考 Microsoft.XMLHttp Mozilla XMLHttpRequest . 這兩個對象的接口基本一致.

如果是在瀏覽器上應用 , 則通常會被瀏覽器拒絕程序訪問其他網站的數據.

如果是在一些有更高權限的環境 , WScript , 就能訪問其他站點的數據了.

[2005-1-27 ]

[劉如鴻]:

現在可以開始自由提問,請大家講問題提交到futurelight,最好指定哪個嘉賓回答您的問題,謝謝

[2005-1-27 ]

嘉賓[戴立堅]: IE瀏覽器下,如何用js讀取遠程URL的內容??

使用 var req=new XMLHttpRequest();

req.open("GET",url,false,null,null);

req.send("");

req.responseXML 就是一個 XmlDocument 對象.

(只適合Mozilla/FireFox或相關核心的瀏覽器. 另外Opera8也支持)

[2005-1-27 ]

嘉賓[萬常華]:

js運行方式導致性能上不及別的語言,但就邏輯描述能力和一些動態特徵,甚至是別的一些語言所不及的

[2005-1-27 ]

[劉如鴻]: 腳本語言的安全性問題?

這問題很有意思,其實也是基於Web應用的最大挑戰,沒有絕對的安全,您可以將一些交互性的邏輯放置在客戶端,但是對於嚴格的商業邏輯判斷還是需要在服務器處理的。

[2005-1-27 ]

嘉賓[戴立堅]: 腳本語言的安全性問題?

其實腳本本沒有什麼安全的問題 . 這些問題都是被它的環境所限制的. 例如瀏覽器一般不給你使用某些對象,不允許訪問本地磁盤,不允許訪問其他站點的資源等等..

[2005-1-27 ]

嘉賓[萬常華]: 請萬老師介紹一下JSVM好嗎

JSVM 本質上是一個javascript 框架,遵循這個框架從事 js 開發,可以實現js code更好地被複用。

[2005-1-27 ]

[劉如鴻]: js讀取遠程URL 是什麼原因遭到拒絕訪問的呢? 是遠程URL的服務器不允許還是本地瀏覽器不允許?

還是安全的原因,從安全的角度考慮,IE是不允許你跨域訪問的

[2005-1-27 ]

嘉賓[戴立堅]: 說點JS的應用層面吧

這個首選是瀏覽器 . 然後就是用JS ASP WScript . 更有些程序會使用MSScripting技術來加載腳本來擴充程序的功能. 這個和VBA很像.

[2005-1-27 ]

嘉賓[戴立堅]: 我還想問一下,jscrpit.net將來會有單獨的開發環境出來嗎?

這個不太清楚 . 我想如果MS要支持的話 ,將會在VS.NET中出現. C#,VB.NET一樣的.

[2005-1-27 ]

嘉賓[戴立堅]: 可是一般瀏覽器默認是不允許遠程發送 XMLHttpRequest請求的,它會彈出對話框提示是否繼續,或者乾脆說拒絕訪問,如何解決這種問題? 可以讓它直接訪問!比如我有一公用的xml數據要通過幾個服務器來遠程訪問!

主要是考慮隱私的問題. 例如如果別人訪問你的網站,如果你的腳本能訪問銀行網站,那麼你就有機會偷到密碼了 . 所以瀏覽器是不允許你這樣做的.

[2005-1-27 ]

[劉如鴻]: 我還想問一下,jscript.net將來會有單獨的開發環境出來嗎?

我想不會的,微軟通過.NET統一了編程語言,沒有理由還分離出單獨的運行環境,但是我想在Avalon,你是可以使用JScript的,不過這個時候使用C#或者VB.NET這樣的語言可能更加習慣

[2005-1-27 ]

嘉賓[萬常華]: 一個良好的組織結構和規範這樣的規範應該從哪些方面考慮的? )

我想可以至少要考慮,代碼文件的組織結構和js code語法域的獨立性。

JSVM中,採用類似java的包結構的規範,使任意兩個人開發的js code能放在一起運行,而且他們的語法域相互對立,這樣運行起來不會導致衝突。

[2005-1-27 ]

嘉賓[戴立堅]: 可不可以簡單介紹一下 WScript 這個高權限的環境

如果你使用的是 Windows , 建立一個 test.js , 然後裏面打 WScript.Echo("Hello World"); , 那麼這就是一個 WScript 程序了. 雙擊它就能看到程序運行.(加入*.js文件的默認打開方式不變的話)

WScriptIE中運行腳本不同的地方是,你使用的是WScript對象, 而不是window/document.

另外你的權限是用戶權限 , 可以訪問很多資源的.

[2005-1-27 ]

嘉賓[戴立堅]: 我還想問個問題,flash的腳本將來在純.net平臺上會有影響嗎

如果你的腳本是寫在Flash裏的,那麼這個和.net沒有什麼直接的關係.

[2005-1-27 ]

嘉賓[戴立堅]: 腳本的藝術在於它的精巧和靈活,濫用當然會有害無利。但是使用的藝術,嘉賓是不是能分享一二

這個和經驗有比較大的關係.

講到藝術,就有點不實用的感覺.所以我平時開發是以效率爲主的.

但如果我要做給別人重複使用的東西時,就要考慮到是否方便地讓別人使用這個角度了.

你可以到http://www.lostinet.com/files/裏下載我的ChatSolution,裏面有一個rane.js文件.裏面體現了我對藝術的看法.(藝術的代碼總是有很多好處,而缺點就是難懂)

[2005-1-27 ]

嘉賓[戴立堅]: 迷失老大, 問你一句: abc = {} 這種結構叫什麼東西呀.

{} 是對象的表達式. {} 是最簡單的對象 , 等於 new Object();

[2005-1-27 ]

嘉賓[萬常華]: 目前的jsvm能夠實現類似java裏面接口這樣的功能嗎? )

javascript 是一門動態語言,接口在這裏意義不是非常大,JSVM 目前面臨的瓶頸是性能方面,在對對象原形的判斷上,jsvm2.x有了更多的考量

[2005-1-27 ]

嘉賓[戴立堅]: 請問 var a = {"aa": "aa", "bb":"bb"} 這種寫法叫什麼名

這個相當於

var a=new Object();

a.aa="aa";

a.bb="bb";

如果你不想分開那麼多行來寫,

{property1:value1,property2:value2} 這樣的寫法就直接很多.

[2005-1-27 ]

嘉賓[戴立堅]: 我平時在用JS時的一個擔心就是JS在瀏覽器的兼容性問題,比如一個瀏覽器的不同版本,IE,Firefox.....,不知嘉賓對此有何建議?你們在實施中是如何最大保證兼容性的??

JS本身在IE與其他瀏覽器是一致的.不同的地方是環境的不同. 在瀏覽器上就是DHTML的規範不同.

我一般的做法是儘量用規範的寫.例如儘量用element. setAttribute/getAttribute . 如果遇到不同的地方,就用if(isie){...}else{...} 的做法. 對於一些"downlevel"的瀏覽器,那就只好說"不支持".

csdn上的javascript版上有關於這個的細節的討論.

[2005-1-27 ]

嘉賓[萬常華]: JavaScript在長角里的展望?有前途嗎???? )

我們不能指望一門計算機語言有太長的生命週期,重要的編程思想。

[2005-1-27 ]

嘉賓[戴立堅]: 在非IE瀏覽器裏比如說 firefox 裏如何實現 XmlDom

這個是用 document.implementation.createDocument("", " null); 來得到一個XmlDocument

[2005-1-27 ]

嘉賓[戴立堅]: 問一句老大, iframe 裏使用 top.screenTop 取到的值不準確問題有沒有解決呀. 而取 parent.screenTop 卻是正確的

這個我沒有測試過. 如果你的經驗是正確的,那麼這是一個IEBUG.

但你可以考慮使用top.screenTop,然後計算各framewindow.topheight來計算出準確的值.

[2005-1-27 ]

嘉賓[萬常華]: 問一句老大, iframe 裏使用 top.screenTop 取到的值不準確問題有沒有解決呀. 而取 parent.screenTop 卻是正確的

你這個問題不在javascript範疇內,屬於dhtml的內容。還有很多諸如此類的問題,我建議去找 Web WorkShop 參考看看。(INET.CHM

[2005-1-27 ]

[劉如鴻]: 除了smartclient ,有沒有.NET後臺的RIA應用?

RIA準確的說是具備網絡訪問能力的終端的表現層架構,請注意我提到了終端和表現層這兩個概念,因此在後臺去說RIA是沒有意義的,關於RIASmart Client,大家可以看我的blog:http://blog.csdn.net/liuruhong/archive/2005/01/10/247110.aspx,《程序員》雜誌2005年第二期也作了技術專題

[2005-1-27 ]

[劉如鴻]: 動態腳本語言在RIA上應用好像很多,嘉賓看好哪個?

比較典型的可能是Bindows了,我記得我寫過一個評論,就我個人,不是那麼看好,http://blog.csdn.net/liuruhong/archive/2004/05/07/664.aspx

[2005-1-27 ]

嘉賓[戴立堅]: 現在flash的腳本越來越接近jscript了,我還想問個問題,flash的腳本將來在純.net平臺上會有影響嗎

不是很明白 . 你可以考慮 flash中的js dotnetjs "應用" 是兩回事就OK. 需要flash就寫flash的腳本 ,需要dotnet就寫dotnet的腳本. 除非flash打算支持dotnet,否則這沒有關係的.

[2005-1-27 ]

嘉賓[萬常華]: 動態腳本語言在RIA上應用好像很多,嘉賓看好哪個?

RIA的應用接下來會越來越多,我們目前需要的是制定一個企業標準來規範這一塊的開發。還必須有一個語法層面上與業務無關的框架

[2005-1-27 ]

[劉如鴻]:

大家有什麼問題可以提交給futruelight,他會負責提交給嘉賓

[2005-1-27 ]

嘉賓[戴立堅]: JS裏對長度超過千的數組遍歷有何好的建議?? 甚至數組長度更大的

如果真的有那樣的數組,那麼當然寫法上要注意點.

例如最好是 var arr=obj1.Property1.TheArrays; var len=arr.lengh; for(var i=0;i<LEN;I++)

{

var item=arr[i];

//...

}

如果寫成

for(var i=0;i<OBJ1.PROPERTY1.THEARRAYS.LENGTH;I++)

{

if(obj1.Property1.TheArrays[i]!=null)

{

res+=obj1.Property1.TheArrays[i]

}

}

這樣的寫法性能就很低了。

[2005-1-27 ]

嘉賓[萬常華]: JS裏對長度超過千的數組遍歷有何好的建議?? 甚至數組長度更大的

如果數組過大,我考慮是不是放棄用數組,例如用 Scripting.Dictionary 來實現查找某個對象 的方式來解決

[2005-1-27 ]

嘉賓[戴立堅]: 其實我的意思是flash的腳本不改變的話在新的.net平臺js上會有影響嗎?

同上.

[2005-1-27 ]

[劉如鴻]:

我想問兩位嘉賓,是否考慮過腳本方面的垃圾回收,就我的瞭解,JScript目前做的不是特別好?但是在應對大對象的情況下,應該怎麼考慮?

[2005-1-27 ]

嘉賓[戴立堅]: 有個問題不知當問不當問 window.open 的返回值 和彈出的窗口的window不相等是爲什麼

這個沒有遇到過,也無法分析原因 也許在社區裏提問會有其他人有那樣的經驗。

[2005-1-27 ]

嘉賓[萬常華]: 有個問題不知當問不當問 window.open 的返回值 和彈出的窗口的window不相等是爲什麼

在我看來,他們是相等的,不知你當時的測試場景是什麼情況。

[2005-1-27 ]

嘉賓[戴立堅]: 腳本方面的垃圾回收

MICROSOFT的這個的確做得不好。主要問題是因爲JScriptDHTML都是基於COM的。COM在這個的處理上有缺陷。

我通常遇到的問題是HTML ELEMENT事件的關聯,如果沒有釋放,那麼內存就不會釋放。如果主動detachEvent,那樣就沒有問題了。

[2005-1-27 ]

嘉賓[萬常華]: 請問現在有很多軟件,都想全部使用javascript實現,你認爲現在到了這個時候了嗎!現在的軟件業可以都拖到web上來嗎?

不是任何應用都適合搬到web上來的。javascript 的功能依賴於 dom 庫。

[2005-1-27 ]

[劉如鴻]: 問一句, JS還能活多久, MS smart client 出來之後JS是否還有位置?

任何一個語言的存在都是有其意義的,是因爲需要所以語言會產生和流行,Smart Client只是一個理念,表現層架構的一種提法,他們之間本身並沒有太多的衝突,我想他能夠活很長時間

[2005-1-27 ]

嘉賓[戴立堅]: 能請嘉賓朋友談一下JavaScript中所謂的藝術嗎?

我眼中的藝術分:

1。用很短的代碼實現較多的功能。這樣的代碼往往都有藝術氣息。

2。寫出來的代碼容易被使用,那樣需要在代碼上下很大的功夫,這也很藝術

所以我的觀點時,如果代碼經過不斷地改進,達到越來越好,那麼這個就是藝術了。 例如JSVM,Bindows就是藝術

[2005-1-27 ]

嘉賓[萬常華]: 能請嘉賓朋友談一下JavaScript中所謂的藝術嗎?

我認爲,如果在js的設計思想符合美學特徵,那就是一種藝術了!

[2005-1-27 ]

嘉賓[戴立堅]: jscript.net微軟會給它裝混亂器嗎?

JScript.Net會編譯成 DotNet dll 的。 所以使用 DotNet 的混淆器就OK了。

[2005-1-27 ]

[劉如鴻]: jscript.net微軟會給它裝混亂器嗎?

JScript.NET目前是編譯性語言,和C#,VB.NET同等的,所以所謂的混淆是沒有意義的e

[2005-1-27 ]

嘉賓[戴立堅]: 所謂腳本都是在客戶端運行的代碼,那麼對於一些關鍵性的腳本代碼,如何保證其不備瀏覽者看到呢?

很多服務器都應用腳本技術。例如ASPVBScript/JScript來寫。

如果要運行在客戶端,那麼做法可以是:

1。儘量不要讓客戶端的人得到JS的代碼。例如屏蔽右鍵是基本的,有很多人想出各種方法的目的是爲了這個。

2。是保護JS的思想,儘量另代碼變得難讀。這樣即使得到代碼,也很難被閱讀和修改。

[2005-1-27 ]

嘉賓[萬常華]: 所謂腳本都是在客戶端運行的代碼,那麼對於一些關鍵性的腳本代碼,如何保證其不備瀏覽者看到呢?

這是 javascript 中目前難以解決的問題。當初設計者包括現在的解釋器提供商都沒有考慮這個問題,這是把js作爲一個腳本語言的定位決定的

[2005-1-27 ]

嘉賓[劉如鴻]: jscript.net微軟會給它裝混亂器嗎?

因爲微軟提供的混淆器或者說編碼器是在源代碼層次上考慮的,如果已經編譯成MSIL,那麼之後的混淆是其他工具去處理的

[2005-1-27 ]

[劉如鴻]: JScript.Net和現在的JScript有什麼不同???

最簡單的解釋,JScript.NET必須在.NET上運行,而JScript可以在瀏覽器運行

[2005-1-27 ]

嘉賓[戴立堅]: js 是否可以擺脫瀏覽器的框框? 我知道用 window.createPopup();可以模擬一下,但是如果它的父頁面如果關閉, 它也會跟着關閉? 有沒有什麼更好的辦法呢?

如果腳本是運行在瀏覽器中的,那麼就要受瀏覽器的限制。

這個是具體瀏覽器的開發問題了。如果技術上無法實現,那就看出瀏覽器的公司願意不願意提供這個功能了。

[2005-1-27 ]

嘉賓[萬常華]: js提供錯誤處理功能了嗎?就像java中的exception

提供了,但功能比較弱,我們做一些封裝,可以大致上實現java異常的處理機制。

[2005-1-27 ]

嘉賓[戴立堅]: 請問現在有很多軟件,都想全部使用javascript實現,你認爲現在到了這個時候了嗎!現在的軟件業可以都拖到web上來嗎?

我認爲現在是屬於研發和初試階段。

這個要看瀏覽器的生命力了。如果以後有東西會取代瀏覽器,那麼基於瀏覽器的JS應用也會慢慢滅亡。

但是現在看來程序越來越基於瀏覽器了。所以我對這個方向很看好的。

但是以後也有可能有更多的編程方式。例如IEHOST DotNet的程序,如果這個得到大的發展,那麼腳本應用會受打擊。

[2005-1-27 ]

[劉如鴻]: 請問現在有很多軟件,都想全部使用javascript實現,你認爲現在到了這個時候了嗎!現在的軟件業可以都拖到web上來嗎?

everything in web是一件很愚蠢的事情,我想任何平臺都有自己擅長的問題域,不然就沒有存在的價值,有些應用使用Web是合適的,有些應用並不是合適,所以現在有人提出了“The Return of Rich Client”的論調,某種角度來說,也就是對於目前Web過熱的反思

[2005-1-27 ]

嘉賓[萬常華]: 我想知道javascript到底可以幹什麼 或者說它到底可以發展到什麼地步

javascript 目前主要是一門控制語言,沒有基本的IO操作定義,除了本身的計算功能以外,其他的都要藉助於容器中提供的控件來實現。

[2005-1-27 ]

嘉賓[戴立堅]: JavaScript有沒有好一點的調試器,我每次都是使用alert()的方法來調試的!

可以用vs.net來調試js

不過我自己也是經常用alert

另外攔截window.onerror也是好方案。

IE中。能夠得到 window.onerror.caller 的。這樣能夠得到一個JSStackTrace(調用的函數順序表),這對調試很有幫助。

[2005-1-27 ]

[劉如鴻]: 目前國內有沒有像Bindows這樣規模的JS開源項目,想了解一下

王常華的JSVM就是一個這樣的框架,你可以在www.51js.com上得到更多的信息

[2005-1-27 ]

嘉賓[戴立堅]: 請推薦幾個javascript 的調試工具,謝謝

首推選 vs.net vs.net裏的調試裏的關聯進程,選上ScriptOK了。

[2005-1-27 ]

嘉賓[萬常華]: 目前國內有沒有像Bindows這樣規模的JS開源項目,想了解一下

據我所知,類似bindows關注於web UI 方面的項目國內就有幾個,但目前沒有開源。

[2005-1-27 ]

[劉如鴻]:

大家有問題儘快提交給futurelight,聊天活動剩下10分鐘結束

[2005-1-27 ]

嘉賓[戴立堅]: 問一句, 如何在IE裏也實現 watch() ? watchNS裏是被支持的

我沒有接觸過 NS 中的 watch() 不如說說 watch 是做什麼的?然後看看在IE中怎樣實現同樣的功能?

[2005-1-27 ]

嘉賓[萬常華]: 一個良好的組織結構和規範這樣的規範應該從哪些方面考慮的? )

前面已經回答

[2005-1-27 ]

嘉賓[戴立堅]: 剛纔玩WALLOP突然想起一個問題來~~跟梅花雪的問題類似。FLEX這樣的技術出現會對JS產生什麼樣的影響。

就好像飯與麪包的感覺。

如果某一天大家都認爲麪包好吃了,那麼就沒有人吃飯了。

所以飯和麪包都要努力呵呵。

FLEX相當於新的技術和應用。但是具體能不能代替JS的應用,具體是看他們的優點缺點和開發人員的選擇了。

[2005-1-27 ]

嘉賓[戴立堅]: 能不能說明一下如何攔截window.onerror,這個方法沒有用過!

例如 window.οnerrοr=function(msg,file,line){ alert(msg); return true ;}

[2005-1-27 ]

嘉賓[戴立堅]: 請問:爲什麼沒有組織,專門做一些控件!,來統一各瀏覽器的差距!

其實是有一些這樣的代碼的。

例如很多人使用 HTMLElement.prototype.__defineGetter__("outerHTML",..)的方法來統一這些應用。

Bindows在在另外的模式上去屏蔽瀏覽器的細節。

不過這是艱鉅的工作,還要看各瀏覽器的製造商的臉色。。

[2005-1-27 ]

嘉賓[萬常華]: 能不能說明一下如何攔截window.onerror,這個方法沒有用過!

爲什麼要攔截呢? 既然有異常,我們或者處理,或者向上層容器拋。

我主張js 開發中應多用

try{

} catch(){}

如果非要忽略,可以通過 window.onerror = function(){return false}

來實現

[2005-1-27 ]

嘉賓[戴立堅]: 我覺得對於不同瀏覽器還是針對每個瀏覽器作一套方案的比較好,而不是寫很長很長的腳本去適應他們

那樣也有缺點的。我曾經試過這樣做。 但是當需要修改代碼時,兩邊同時改,同時測試,所費的時間更多。

[2005-1-27 ]

嘉賓[萬常華]: 請問腳本會不會,被各種組織的框架給擠掉!

腳本自己也可以有框架啊

[2005-1-27 ]

嘉賓[萬常華]: 請問在JS裏面能否拋出一個自定義的錯誤,就像VBS裏面的Err.Raise一樣?

可以 throw new Error(errNum,errDescription);

[2005-1-27 ]

嘉賓[劉如鴻]: HTC是否只有IE支持?

是的,HTCIE自己的擴展,Mozilla也有類似的東西,就是XUL

[2005-1-27 ]

[劉如鴻]: 使用javascript編寫遊戲,是否有前途?

有人這麼做了,有沒有前途我不敢說

[2005-1-27 ]

嘉賓[戴立堅]: 使用javascript編寫遊戲,是否有前途?

我覺得,如果沒有人與你競爭,那就是有前途的。

否則用JS寫大型的程序會很費時間。

[2005-1-27 ]

嘉賓[戴立堅]: 即使你寫兼容的腳本,也是一樣要改兩個地方,只是要改的地方少一些:)

是的。但是這樣會不容易出錯誤。

我以前經常犯的錯誤是,把代碼從一邊複製到另外一邊,總是忘記修改一些細節。

[2005-1-27 ]

嘉賓[萬常華]: 不再try {}catch()塊裏面 throw語句有效嘛?

有效,如果執行域中沒有catch的話將被拋至頂容器,即 window 對象。

[2005-1-27 ]

嘉賓[劉如鴻]:

感謝大家的積極參與,聊天活動到此結束,如果大家有任何問題,可以通過Email和我們的嘉賓聯繫,他們的聯繫方式可以在個人介紹中找

[2005-1-27 ]

[劉如鴻]:

msdn開發精選》將一如既往地爲您呈現精彩的技術聊天,如果大家對於雜誌和我們的活動有什麼意見和建議,歡迎和我聯繫,我的email:[email protected],再一次謝謝大家的參與

[2005-1-27 ]

發佈了16 篇原創文章 · 獲贊 0 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章