Web开发中的JavaScript设计艺术

聊天主题:Web开发中的JavaScript<nobr><strong style="border: 0px none ; margin: 0px; padding: 0px; color: rgb(0, 0, 255); font-weight: normal; text-decoration: underline;" οnmοuseοver='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u8BBE_u8BA1";KeyGate_ads.ShowGgAds(this,"_u8BBE_u8BA1",event)' οnmοuseοut='isShowGg = false;InTextAds_GgLayer="_u8BBE_u8BA1"' οnclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BB-xcHkYNSKrmNpz-6wOa7Py7AfzIhkP25OqBCcCNtwHAqKUEEAkYCSDPgYcKKBQ4AFDw3ffEB2CdudCBkAWyAQ1uZXdzLmNzZG4ubmV0yAEB2gEqaHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA1MDEyOC8xOTU1OC5odG1sqQIqNvkIWO7dPagDAegD2wX1AwAEAACIBAGQBAGYBAA&amp;num=9&amp;adurl=http://www.knowplat.com/knowcenter/CPlusPlus/index.htm&amp;client=ca-pub-3578421812762734");GgKwClickStat("设计","www.knowplat.com","afc","2000084115");' class="kgb">设计</strong></nobr>艺术
聊天时间2005127日星期四下午200—330

聊天嘉宾:Lostinet(戴立坚)、wch3116(万常华)

详细聊天实录:

[刘如鸿]:

大家好,我是《msdn开发精选》的技术主编刘如鸿。首先感谢大家的到来,今天我们邀请了在JavaScript开发中享有盛名的Lostinetwch3116到场和我们一同探讨JavaScript设计中的种种考虑。

[2005-1-27 <time minute="54" hour="13"><span lang="EN-US" style="color: darkgray; font-family: Arial;">13:54:00</span></time>]

[刘如鸿]:

以下是他们的个人介绍:

Lostinet(戴立坚)2004年微软最有价值的专家,擅长于<nobr><strong style="border: 0px none ; margin: 0px; padding: 0px; color: rgb(0, 0, 255); font-weight: normal; text-decoration: underline;" οnmοuseοver='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u811A_u672C";KeyGate_ads.ShowGgAds(this,"_u811A_u672C",event)' οnmοuseοut='isShowGg = false;InTextAds_GgLayer="_u811A_u672C"' οnclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BoGvTHkYNSKrmNpz-6wOa7Py7Aaa-ujyKuIS2BMCNtwHg1AMQBBgEIM-BhwooFDgAUPv37Zb______wFgnbnQgZAFsgENbmV3cy5jc2RuLm5ldMgBAdoBKmh0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwNTAxMjgvMTk1NTguaHRtbKkCTc6rxBMugz6oAwHoA9sF9QMABAAAiAQBkAQBmAQA&amp;num=4&amp;adurl=http://www.jp1.cn/products/product_s.asp&amp;client=ca-pub-3578421812762734");GgKwClickStat("脚本","www.jp1.cn/","afc","2000084115");' class="kgb">脚本</strong></nobr>开发和基于ASP.NET企业<nobr><strong style="border: 0px none ; color: rgb(0, 0, 255); font-weight: normal; text-decoration: underline;" οnmοuseοver='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","","-100834","应用","%u4EC0%u4E48%u8BA9Web2.0%u5982%u6B64%u5F3A","http%3A//www.sd2china.cn/track1.html", event)' οnmοuseοut="isShowAds = false;isShowAds2 = false" οnclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100834&amp;k=%u5E94%u7528&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20050128/19558.html&amp;gourl=http%3A//www.sd2china.cn/track1.html&amp;parm=46246B362E4D25FF8464764F387A9F84E0B31BF270D6795C&amp;alliedsiteid=0");' class="kgb">应用</strong></nobr>解决方案实现,主要作品为RaneCBMLostinet.Web控件集,CuteEditor 4CuteChat等等。可以通过http://blog.joycode.com/lostinet/ 访问他的个人Blog。现为无业人士,在深圳学英语和减肥。

[2005-1-27 <time minute="55" hour="13"><span lang="EN-US" style="color: darkgray; font-family: Arial;">13:55:00</span></time>]

[刘如鸿]:

wch3116(万常华) 擅长脚本开发及B/S系统架构设计,JSVM 项目负责人。主要作品,JSVMXpRPCWDB。可以通过wch3116@hotmail.com与他联系。现供职于中兴通讯/IT中心,致力于企业应用平台技术整合与应用框架设计。

[2005-1-27 <time minute="56" hour="13"><span lang="EN-US" style="color: darkgray; font-family: Arial;">13:56:00</span></time>]

[刘如鸿]: 现在我宣布一下聊天规则

1。聊天200正式开始,330结束

2. 2:002:30以嘉宾的讨论为主

3. 2:30以后可以自由提问,大家如果有问题,可以通过提交给futurelight,他会将问题提交给嘉宾

4。请不要在聊天室讨论一些和主题无关的话题

谢谢大家的支持和配合

[2005-1-27 <time minute="57" hour="13"><span lang="EN-US" style="color: darkgray; font-family: Arial;">13:57:00</span></time>]

嘉宾[戴立坚]:

大家好..我是戴立坚. 很高兴和万常华来到CSDN上做JS聊天的嘉宾. 很感谢大家来参与这次的讨论.

[2005-1-27 <time minute="58" hour="13"><span lang="EN-US" style="color: darkgray; font-family: Arial;">13:58:00</span></time>]

嘉宾[万常华]:

大家好,非常荣幸有这个机会能与大家在一起交流一下

[2005-1-27 <time minute="0" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:00:00</span></time>]

[刘如鸿]:

虽然一开始JavaScript只是针对脚本设计的,但是发展到现在,已经初步具备了面向对象的功能,两位嘉宾如何看待JavaScript的面向对象呢?

[2005-1-27 <time minute="1" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:01:00</span></time>]

[刘如鸿]:

从我个人的理解,基于JavaScript的面向对象本质上来说可以是Prototype-Based的继承实现方式,因为任何的实现严格意义来说只是采用了父对象的原型

[2005-1-27 <time minute="4" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:04:00</span></time>]

嘉宾[万常华]:

OO 设计思想是 计算机<nobr><strong style="border: 0px none ; margin: 0px; padding: 0px; color: rgb(0, 0, 255); font-weight: normal; text-decoration: underline;" οnmοuseοver='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u8BED_u8A00";KeyGate_ads.ShowGgAds(this,"_u8BED_u8A00",event)' οnmοuseοut='isShowGg = false;InTextAds_GgLayer="_u8BED_u8A00"' οnclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BB-xcHkYNSKrmNpz-6wOa7Py7AfzIhkP25OqBCcCNtwHAqKUEEAkYCSDPgYcKKBQ4AFDw3ffEB2CdudCBkAWyAQ1uZXdzLmNzZG4ubmV0yAEB2gEqaHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA1MDEyOC8xOTU1OC5odG1sqQIqNvkIWO7dPagDAegD2wX1AwAEAACIBAGQBAGYBAA&amp;num=9&amp;adurl=http://www.knowplat.com/knowcenter/CPlusPlus/index.htm&amp;client=ca-pub-3578421812762734");GgKwClickStat("语言","www.knowplat.com","afc","2000084115");' class="kgb">语言</strong></nobr>向 现实模型靠拢 的必然发展过程,js作为一门脚本语言,也要引入这种设计思想,当然,目前因为语言本身的问题,把js作为一种面向对象的语言来做程序设计还有一些缺陷

[2005-1-27 <time minute="7" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:07:00</span></time>]

嘉宾[戴立坚]:

关于面向对象 , 我觉得现在JS主要作用是操作其他对象. 例如 DHTML 中的window/document/element . 或者是其他<nobr><strong style="border: 0px none ; margin: 0px; padding: 0px; color: rgb(0, 0, 255); font-weight: normal; text-decoration: underline;" οnmοuseοver='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u73AF_u5883";KeyGate_ads.ShowGgAds(this,"_u73AF_u5883",event)' οnmοuseοut='isShowGg = false;InTextAds_GgLayer="_u73AF_u5883"' οnclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BwP6sHkYNSKrmNpz-6wOa7Py7Afjd7DyY49-RBsCNtwGwzAsQDBgMIM-BhwooFDgAUKPUsuX6_____wFgnbnQgZAFsgENbmV3cy5jc2RuLm5ldMgBAdoBKmh0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwNTAxMjgvMTk1NTguaHRtbKkCTc6rxBMugz7IApD4gwSoAwHoA9sF9QMABAAAiAQBkAQBmAQA&amp;num=12&amp;adurl=http://www.xbow.com.cn/wsn/product/eko1.asp&amp;client=ca-pub-3578421812762734");GgKwClickStat("环境","www.xbow.com.cn","afc","2000084115");' class="kgb">环境</strong></nobr>中的对象 例如用 ActiveXObject 创建出来的对象或MozillaXMLHttpRequest . 但是 JS 本身带的面向对象的功能很弱 . 适合做一些简单的类库. 但很难达到大规模的类库的应用.

[2005-1-27 <time minute="10" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:10:00</span></time>]

[刘如鸿]:

那么我请问,JavaScript在面向对象中还存在哪些缺陷呢?这些的缺陷是否可以通过一些手段去绕过去

[2005-1-27 <time minute="11" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:11:00</span></time>]

嘉宾[戴立坚]:

脚本本身的语法功能很有限 . 并没有 class 这样的功能. 我比较看好的是 Mozilla __defineGetter__/__defineSetter__ , FlashActionScript中的addProperty的功能 . 这些功能为面向对象提供了一定的方便 .

[2005-1-27 <time minute="12" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:12:00</span></time>]

嘉宾[万常华]:

js是一门基于对象的语言,在基于webjs实际开发中,如果引入一些规范,我们基本上可以很少地方需要考虑他与面向对象之间的区别

[2005-1-27 <time minute="12" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:12:00</span></time>]

嘉宾[戴立坚]:

当然 , MSBehavior(HTC)是实现面向对象的很使用的技术 . 这个技术可以定义属性与事件等等 .

[2005-1-27 <time minute="13" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:13:00</span></time>]

[刘如鸿]:

戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库

[2005-1-27 <time minute="14" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:14:00</span></time>]

[刘如鸿]:

戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库

[2005-1-27 <time minute="14" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:14:00</span></time>]

嘉宾[戴立坚]:

而在面向对象中 ,JS最缺陷的就是无法在语法上直接实现 override(虚拟方法) 的功能. 虽然可以用其他方法来模拟 , 但是写法的特殊和不直观,很影响JS做面向对象的应用.

[2005-1-27 <time minute="14" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:14:00</span></time>]

嘉宾[戴立坚]:

是的 . 我很欣赏 Bindows JSVM . 这些都做得很好 . 如果JS能在语法上提供一些更直接的支持 , 那么我觉得它们会发展得更好的.

[2005-1-27 <time minute="16" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:16:00</span></time>]

[刘如鸿]:

那么对于JScript.NET,你们是如何看待呢?作为.NET环境下的一个半动态语言,除了拥有JavasScript的全部功能之外,还能够利用.NET Framework,按照微软的文档,JScript.NET是第一个实现了ECMA 262 Edition 3的语言,同时也引入了class,package等等关键字

[2005-1-27 <time minute="16" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:16:00</span></time>]

嘉宾[戴立坚]:

如果 IE 等环境支持JScript.Net就更好啦. 可惜现在IE不支持 < script language=jscript.net >.. 所以JScript.Net目前的应用也只在.Net开发中 . 但是做.Net的开发,C#VB.NET这两个更强大的语言 , JScript.Net 的地位真的不上不下.

[2005-1-27 <time minute="18" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:18:00</span></time>]

嘉宾[万常华]:

js能否成,主要在于是否有一个良好的代码组织结构和规范

[2005-1-27 <time minute="19" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:19:00</span></time>]

嘉宾[戴立坚]:

js 是否可对远程URL发送 XMLHttpRequest请求?

可以的. 但是要考虑以下情况: <nobr><strong style="border: 0px none ; color: rgb(0, 0, 255); font-weight: normal; text-decoration: underline;" οnmοuseοver='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u4E86%u89E3Linux%u5185%u5B58%u7BA1%u7406%u7684%u65B9%u5F0F","-100848","操作系统","%u63D0%u9AD8Web%u6570%u636E%u4F20%u8F93%u6548","http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2492", event)' οnmοuseοut="isShowAds = false;isShowAds2 = false" οnclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100848&amp;k=%u64CD%u4F5C%u7CFB%u7EDF&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20050128/19558.html&amp;gourl=http%3A//ibm.csdn.net/ISN_J.aspx%3Faction%3DJMP%26pointid%3D2492&amp;parm=46246B362E4D25FF8464764F387A9F84E0B31BF270D6795C&amp;alliedsiteid=0");' class="kgb">操作系统</strong></nobr>是否支持 . 运行JS的环境是否允许你访问该URL. 一般的应用是网站在客户端通过XmlHttp/XmlHttpRequest来访问"本站"的内容 . 这个IEMOZILLA都支持.

[2005-1-27 <time minute="20" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:20:00</span></time>]

嘉宾[万常华]:

Jscript.Net 由于运行环境的限制,导致他在web端没有用武之地,我想MS

对此他是有考虑的

[2005-1-27 <time minute="20" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:20:00</span></time>]

嘉宾[戴立坚]:

同意万常华. 我想当网络速度不在是库下载速度的障碍时,基于JS的库会得到大规模的应用.

[2005-1-27 <time minute="21" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:21:00</span></time>]

[刘如鸿]:

很多人问我过这样的问题,JavaScript里面有真正对象吗?那么他是如何实现的,你们的理解呢?所谓继承呢?是在一个怎样的角度去说的

[2005-1-27 <time minute="21" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:21:00</span></time>]

[刘如鸿]:初步的面向对象是不是应该说成基于对象?

是的,基于对象和基于原型的面向对象,这是一个很有意思的东西

[2005-1-27 <time minute="22" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:22:00</span></time>]

嘉宾[万常华]:

通过一些手段,在本地建立一个cache机制,可以一定程度上解决 网络带宽带来的一些瓶颈

[2005-1-27 <time minute="23" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:23:00</span></time>]

[刘如鸿]:

就我个人而言,我不是特别赞成太依赖于脚本,如果我们将脚本虚拟机的运行环境扩充而且能够跨平台的话,那么这个时候脚本的优势才会更加明显,而目前,不论IE还是Mozilla,脚本解释器的功能还是极其有限的,对于简单的应用,它可以很好的解决,对于复杂的应用,可能好耗费比传统语言更多的精力才能够解决。那么从这个角度来说,我们是不是不要太过度使用脚本

[2005-1-27 <time minute="26" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:26:00</span></time>]

嘉宾[戴立坚]: javascript vbscript 的区别

基本上是语法上,提供的内置对象/函数的不同. vbscript支持Class但不支持继承. vbscript只适合microsoft或兼容的平台

[2005-1-27 <time minute="27" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:27:00</span></time>]

嘉宾[万常华]:

js 的另外一个应用领域是 hta - Html Appliction 作为最接近web的一种应用程序,我们如果撇开 跨域完全 性能方面的考虑,就开发方式和运行方式而言基本上是一致的。

[2005-1-27 <time minute="27" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:27:00</span></time>]

嘉宾[万常华]: javascript 能不能读取远程xml文件的数据

javascript 借助一控件比如 xmlhttp xmldom 可以实现读取远程xml,但这里有一个跨域安全限制的问题

[2005-1-27 <time minute="28" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:28:00</span></time>]

嘉宾[戴立坚]: javascript 能不能读取远程xml文件的数据

这个是可以的 . 请参考 Microsoft.XMLHttp Mozilla XMLHttpRequest . 这两个对象的接口基本一致.

如果是在浏览器上应用 , 则通常会被浏览器拒绝程序访问其他网站的数据.

如果是在一些有更高权限的环境 , WScript , 就能访问其他站点的数据了.

[2005-1-27 <time minute="29" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:29:00</span></time>]

[刘如鸿]:

现在可以开始自由提问,请大家讲问题提交到futurelight,最好指定哪个嘉宾回答您的问题,谢谢

[2005-1-27 <time minute="29" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:29:00</span></time>]

嘉宾[戴立坚]: 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 <time minute="31" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:31:00</span></time>]

嘉宾[万常华]:

js运行方式导致性能上不及别的语言,但就逻辑描述能力和一些动态特征,甚至是别的一些语言所不及的

[2005-1-27 <time minute="31" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:31:00</span></time>]

[刘如鸿]: 脚本语言的安全性问题?

这问题很有意思,其实也是基于Web应用的最大挑战,没有绝对的安全,您可以将一些交互性的逻辑放置在客户端,但是对于严格的商业逻辑判断还是需要在<nobr><strong style="border: 0px none ; margin: 0px; padding: 0px; color: rgb(0, 0, 255); font-weight: normal; text-decoration: underline;" οnmοuseοver='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u670D_u52A1_u5668";KeyGate_ads.ShowGgAds(this,"_u670D_u52A1_u5668",event)' οnmοuseοut='isShowGg = false;InTextAds_GgLayer="_u670D_u52A1_u5668"' οnclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BNFnbHkYNSKrmNpz-6wOa7Py7Aa3TgDvtnJaNBcCNtwGQThACGAIgz4GHCigUOABQlO-3s_______AWCdudCBkAWgAaPa9f4DsgENbmV3cy5jc2RuLm5ldMgBAdoBKmh0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwNTAxMjgvMTk1NTguaHRtbIACAagDAegD2wX1AwAEAACIBAGQBAGYBAA&amp;num=2&amp;adurl=http://www.edong.com/v8/delicatedserver/&amp;client=ca-pub-3578421812762734");GgKwClickStat("服务器","www.edong.com","afc","2000084115");' class="kgb">服务器</strong></nobr>处理的。

[2005-1-27 <time minute="33" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:33:00</span></time>]

嘉宾[戴立坚]: 脚本语言的安全性问题?

其实脚本本没有什么安全的问题 . 这些问题都是被它的环境所限制的. 例如浏览器一般不给你使用某些对象,不允许访问本地磁盘,不允许访问其他站点的资源等等..

[2005-1-27 <time minute="33" hour="14"><span lang="EN-US" style="color: darkgray; font-family: Arial;">14:33:00</span></time>]

嘉宾[万常华]: 请万老师介绍一下JSVM好吗

JSVM 本质上是一个javascript 框架,遵循这个框架从事 js 开发,可以实现js code更好地被复用。

[2005-1-27 <time minute="34" hour="14"><span lang="EN-US" style="color: darkgray; font-famil

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值