聊天主题:Web开发中的JavaScript设计艺术
聊天时间:2005年1月27日星期四下午2:00—3:30
聊天嘉宾:Lostinet(戴立坚)、wch3116(万常华)
详细聊天实录:
[刘如鸿]:
大家好,我是《msdn开发精选》的技术主编刘如鸿。首先感谢大家的到来,今天我们邀请了在JavaScript开发中享有盛名的Lostinet和wch3116到场和我们一同探讨JavaScript设计中的种种考虑。
[2005-1-27 13:54:00]
[刘如鸿]:
以下是他们的个人介绍:
Lostinet(戴立坚)2004年微软最有价值的专家,擅长于脚本开发和基于ASP.NET企业应用解决方案实现,主要作品为Rane,CBM,Lostinet.Web控件集,CuteEditor 4,CuteChat等等。可以通过http://blog.joycode.com/lostinet/ 访问他的个人Blog。现为无业人士,在深圳学英语和减肥。
[2005-1-27 13:55:00]
[刘如鸿]:
wch3116(万常华) 擅长脚本开发及B/S系统架构设计,JSVM 项目负责人。主要作品,JSVM,XpRPC,WDB。可以通过wch3116@hotmail.com与他联系。现供职于中兴通讯/IT中心,致力于企业应用平台技术整合与应用框架设计。
[2005-1-27 13:56:00]
[刘如鸿]: 现在我宣布一下聊天规则
1。聊天2:00正式开始,3:30结束
2. 2:00到2:30以嘉宾的讨论为主
3. 2:30以后可以自由提问,大家如果有问题,可以通过提交给futurelight,他会将问题提交给嘉宾
4。请不要在聊天室讨论一些和主题无关的话题
谢谢大家的支持和配合
[2005-1-27 13:57:00]
嘉宾[戴立坚]:
大家好..我是戴立坚. 很高兴和万常华来到CSDN上做JS聊天的嘉宾. 很感谢大家来参与这次的讨论.
[2005-1-27 13:58:00]
嘉宾[万常华]:
大家好,非常荣幸有这个机会能与大家在一起交流一下
[2005-1-27 14:00:00]
[刘如鸿]:
虽然一开始JavaScript只是针对脚本设计的,但是发展到现在,已经“初步”具备了面向对象的功能,两位嘉宾如何看待JavaScript的面向对象呢?
[2005-1-27 14:01:00]
[刘如鸿]:
从我个人的理解,基于JavaScript的面向对象本质上来说可以是Prototype-Based的继承实现方式,因为任何的实现严格意义来说只是采用了父对象的原型
[2005-1-27 14:04:00]
嘉宾[万常华]:
OO 设计思想是 计算机语言向 现实模型靠拢 的必然发展过程,js作为一门脚本语言,也要引入这种设计思想,当然,目前因为语言本身的问题,把js作为一种面向对象的语言来做程序设计还有一些缺陷
[2005-1-27 14:07:00]
嘉宾[戴立坚]:
关于面向对象 , 我觉得现在JS主要作用是操作其他对象. 例如 DHTML 中的window/document/element . 或者是其他环境中的对象 例如用 ActiveXObject 创建出来的对象或Mozilla的XMLHttpRequest . 但是 JS 本身带的面向对象的功能很弱 . 适合做一些简单的类库. 但很难达到大规模的类库的应用.
[2005-1-27 14:10:00]
[刘如鸿]:
那么我请问,JavaScript在面向对象中还存在哪些缺陷呢?这些的缺陷是否可以通过一些手段去绕过去
[2005-1-27 14:11:00]
嘉宾[戴立坚]:
脚本本身的语法功能很有限 . 并没有 class 这样的功能. 我比较看好的是 Mozilla 的 __defineGetter__/__defineSetter__ , 与Flash中ActionScript中的addProperty的功能 . 这些功能为面向对象提供了一定的方便 .
[2005-1-27 14:12:00]
嘉宾[万常华]:
js是一门基于对象的语言,在基于web的js实际开发中,如果引入一些规范,我们基本上可以很少地方需要考虑他与面向对象之间的区别
[2005-1-27 14:12:00]
嘉宾[戴立坚]:
当然 , MS的Behavior(HTC)是实现面向对象的很使用的技术 . 这个技术可以定义属性与事件等等 .
[2005-1-27 14:13:00]
[刘如鸿]:
戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库
[2005-1-27 14:14:00]
[刘如鸿]:
戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库
[2005-1-27 14:14:00]
嘉宾[戴立坚]:
而在面向对象中 ,JS最缺陷的就是无法在语法上直接实现 override(虚拟方法) 的功能. 虽然可以用其他方法来模拟 , 但是写法的特殊和不直观,很影响JS做面向对象的应用.
[2005-1-27 14:14:00]
嘉宾[戴立坚]:
是的 . 我很欣赏 Bindows 和 JSVM . 这些都做得很好 . 如果JS能在语法上提供一些更直接的支持 , 那么我觉得它们会发展得更好的.
[2005-1-27 14:16:00]
[刘如鸿]:
那么对于JScript.NET,你们是如何看待呢?作为.NET环境下的一个半动态语言,除了拥有JavasScript的全部功能之外,还能够利用.NET Framework,按照微软的文档,JScript.NET是第一个实现了ECMA 262 Edition 3的语言,同时也引入了class,package等等关键字
[2005-1-27 14:16:00]
嘉宾[戴立坚]:
如果 IE 等环境支持JScript.Net就更好啦. 可惜现在IE不支持 < script language=jscript.net >.. 所以JScript.Net目前的应用也只在.Net开发中 . 但是做.Net的开发,有C#和VB.NET这两个更强大的语言 , JScript.Net 的地位真的不上不下.
[2005-1-27 14:18:00]
嘉宾[万常华]:
js能否成“库”,主要在于是否有一个良好的代码组织结构和规范
[2005-1-27 14:19:00]
嘉宾[戴立坚]:
js 是否可对远程URL发送 XMLHttpRequest请求?
可以的. 但是要考虑以下情况: 操作系统是否支持 . 运行JS的环境是否允许你访问该URL. 一般的应用是网站在客户端通过XmlHttp/XmlHttpRequest来访问"本站"的内容 . 这个IE和MOZILLA都支持.
[2005-1-27 14:20:00]
嘉宾[万常华]:
Jscript.Net 由于运行环境的限制,导致他在web端没有用武之地,我想MS
对此他是有考虑的
[2005-1-27 14:20:00]
嘉宾[戴立坚]:
同意万常华. 我想当网络速度不在是库下载速度的障碍时,基于JS的库会得到大规模的应用.
[2005-1-27 14:21:00]
[刘如鸿]:
很多人问我过这样的问题,JavaScript里面有真正对象吗?那么他是如何实现的,你们的理解呢?所谓继承呢?是在一个怎样的角度去说的
[2005-1-27 14:21:00]
[刘如鸿]: “初步”的面向对象是不是应该说成基于对象?
是的,基于对象和基于原型的面向对象,这是一个很有意思的东西
[2005-1-27 14:22:00]
嘉宾[万常华]:
通过一些手段,在本地建立一个cache机制,可以一定程度上解决 网络带宽带来的一些瓶颈
[2005-1-27 14:23:00]
[刘如鸿]:
就我个人而言,我不是特别赞成太依赖于脚本,如果我们将脚本虚拟机的运行环境扩充而且能够跨平台的话,那么这个时候脚本的优势才会更加明显,而目前,不论IE还是Mozilla,脚本解释器的功能还是极其有限的,对于简单的应用,它可以很好的解决,对于复杂的应用,可能好耗费比传统语言更多的精力才能够解决。那么从这个角度来说,我们是不是不要太过度使用脚本
[2005-1-27 14:26:00]
嘉宾[戴立坚]: javascript 与 vbscript 的区别
基本上是语法上,提供的内置对象/函数的不同. vbscript支持Class但不支持继承. vbscript只适合microsoft或兼容的平台
[2005-1-27 14:27:00]
嘉宾[万常华]:
js 的另外一个应用领域是 hta - Html Appliction 作为最接近web的一种应用程序,我们如果撇开 跨域完全 及 性能方面的考虑,就开发方式和运行方式而言基本上是一致的。
[2005-1-27 14:27:00]
嘉宾[万常华]: javascript 能不能读取远程xml文件的数据
javascript 借助一控件比如 xmlhttp xmldom 可以实现读取远程xml,但这里有一个跨域安全限制的问题
[2005-1-27 14:28:00]
嘉宾[戴立坚]: javascript 能不能读取远程xml文件的数据
这个是可以的 . 请参考 Microsoft.XMLHttp 或 Mozilla 的 XMLHttpRequest . 这两个对象的接口基本一致.
如果是在浏览器上应用 , 则通常会被浏览器拒绝程序访问其他网站的数据.
如果是在一些有更高权限的环境 , 如 WScript , 就能访问其他站点的数据了.
[2005-1-27 14:29:00]
[刘如鸿]:
现在可以开始自由提问,请大家讲问题提交到futurelight,最好指定哪个嘉宾回答您的问题,谢谢
[2005-1-27 14:29:00]
嘉宾[戴立坚]: 非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 14:31:00]
嘉宾[万常华]:
js运行方式导致性能上不及别的语言,但就逻辑描述能力和一些动态特征,甚至是别的一些语言所不及的
[2005-1-27 14:31:00]
[刘如鸿]: 脚本语言的安全性问题?
这问题很有意思,其实也是基于Web应用的最大挑战,没有绝对的安全,您可以将一些交互性的逻辑放置在客户端,但是对于严格的商业逻辑判断还是需要在服务器处理的。
[2005-1-27 14:33:00]
嘉宾[戴立坚]: 脚本语言的安全性问题?
其实脚本本没有什么安全的问题 . 这些问题都是被它的环境所限制的. 例如浏览器一般不给你使用某些对象,不允许访问本地磁盘,不允许访问其他站点的资源等等..
[2005-1-27 14:33:00]
嘉宾[万常华]: 请万老师介绍一下JSVM好吗
JSVM 本质上是一个javascript 框架,遵循这个框架从事 js 开发,可以实现js code更好地被复用。
[2005-1-27 14:34:00]
[刘如鸿]: js读取远程URL 是什么原因遭到拒绝访问的呢? 是远程URL的服务器不允许还是本地浏览器不允许?
还是安全的原因,从安全的角度考虑,IE是不允许你跨域访问的
[2005-1-27 14:37:00]
嘉宾[戴立坚]: 说点JS的应用层面吧
这个首选是浏览器 . 然后就是用JS写 ASP WScript . 更有些程序会使用MS的Scripting技术来加载脚本来扩充程序的功能. 这个和VBA很像.
[2005-1-27 14:38:00]
嘉宾[戴立坚]: 我还想问一下,jscrpit.net将来会有单独的开发环境出来吗?
这个不太清楚 . 我想如果MS要支持的话 ,将会在VS.NET中出现. 和C#,VB.NET一样的.
[2005-1-27 14:39:00]
嘉宾[戴立坚]: 可是一般浏览器默认是不允许远程发送 XMLHttpRequest请求的,它会弹出对话框提示是否继续,或者干脆说拒绝访问,如何解决这种问题? 可以让它直接访问!比如我有一公用的xml数据要通过几个服务器来远程访问!
主要是考虑隐私的问题. 例如如果别人访问你的网站,如果你的脚本能访问银行网站,那么你就有机会偷到密码了 . 所以浏览器是不允许你这样做的.
[2005-1-27 14:40:00]
[刘如鸿]: 我还想问一下,jscript.net将来会有单独的开发环境出来吗?
我想不会的,微软通过.NET统一了编程语言,没有理由还分离出单独的运行环境,但是我想在Avalon,你是可以使用JScript的,不过这个时候使用C#或者VB.NET这样的语言可能更加习惯
[2005-1-27 14:40:00]
嘉宾[万常华]: 一个“良好的组织结构和规范”这样的规范应该从哪些方面考虑的? )
我想可以至少要考虑,代码文件的组织结构和js code语法域的独立性。
在JSVM中,采用类似java的包结构的规范,使任意两个人开发的js code能放在一起运行,而且他们的语法域相互对立,这样运行起来不会导致冲突。
[2005-1-27 14:41:00]
嘉宾[戴立坚]: 可不可以简单介绍一下 WScript 这个高权限的环境
如果你使用的是 Windows , 建立一个 test.js , 然后里面打 WScript.Echo("Hello World"); , 那么这就是一个 WScript 程序了. 双击它就能看到程序运行.(加入*.js文件的默认打开方式不变的话)
WScript与IE中运行脚本不同的地方是,你使用的是WScript对象, 而不是window/document了.
另外你的权限是用户权限 , 可以访问很多资源的.
[2005-1-27 14:41:00]
嘉宾[戴立坚]: 我还想问个问题,flash的脚本将来在纯.net平台上会有影响吗
如果你的脚本是写在Flash里的,那么这个和.net没有什么直接的关系.
[2005-1-27 14:42:00]
嘉宾[戴立坚]: 脚本的艺术在于它的精巧和灵活,滥用当然会有害无利。但是使用的艺术,嘉宾是不是能分享一二
这个和经验有比较大的关系.
讲到艺术,就有点不实用的感觉.所以我平时开发是以效率为主的.
但如果我要做给别人重复使用的东西时,就要考虑到是否方便地让别人使用这个角度了.
你可以到http://www.lostinet.com/files/里下载我的ChatSolution,里面有一个rane.js文件.里面体现了我对艺术的看法.(艺术的代码总是有很多好处,而缺点就是难懂)
[2005-1-27 14:45:00]
嘉宾[戴立坚]: 迷失老大, 问你一句: abc = {} 这种结构叫什么东西呀.
{} 是对象的表达式. {} 是最简单的对象 , 等于 new Object();
[2005-1-27 14:46:00]
嘉宾[万常华]: 目前的jsvm能够实现类似java里面“接口”这样的功能吗? )
javascript 是一门动态语言,接口在这里意义不是非常大,JSVM 目前面临的瓶颈是性能方面,在对对象原形的判断上,jsvm2.x有了更多的考量
[2005-1-27 14:47:00]
嘉宾[戴立坚]: 请问 var a = {"aa": "aa", "bb":"bb"} 这种写法叫什么名
这个相当于
var a=new Object();
a.aa="aa";
a.bb="bb";
如果你不想分开那么多行来写,
{property1:value1,property2:value2} 这样的写法就直接很多.
[2005-1-27 14:47:00]
嘉宾[戴立坚]: 我平时在用JS时的一个担心就是JS在浏览器的兼容性问题,比如一个浏览器的不同版本,IE,Firefox.....,不知嘉宾对此有何建议?你们在实施中是如何最大保证兼容性的??
JS本身在IE与其他浏览器是一致的.不同的地方是环境的不同. 在浏览器上就是DHTML的规范不同.
我一般的做法是尽量用规范的写.例如尽量用element. setAttribute/getAttribute . 如果遇到不同的地方,就用if(isie){...}else{...} 的做法. 对于一些"downlevel"的浏览器,那就只好说"不支持"了.
csdn上的javascript版上有关于这个的细节的讨论.
[2005-1-27 14:49:00]
嘉宾[万常华]: JavaScript在长角里的展望?有前途吗???? )
我们不能指望一门计算机语言有太长的生命周期,重要的编程思想。
[2005-1-27 14:49:00]
嘉宾[戴立坚]: 在非IE浏览器里比如说 firefox 里如何实现 XmlDom
这个是用 document.implementation.createDocument("", " null); 来得到一个XmlDocument
[2005-1-27 14:51:00]
嘉宾[戴立坚]: 问一句老大, 在 iframe 里使用 top.screenTop 取到的值不准确问题有没有解决呀. 而取 parent.screenTop 却是正确的
这个我没有测试过. 如果你的经验是正确的,那么这是一个IE的BUG了.
但你可以考虑使用top.screenTop,然后计算各frame与window.top的height来计算出准确的值.
[2005-1-27 14:52:00]
嘉宾[万常华]: 问一句老大, 在 iframe 里使用 top.screenTop 取到的值不准确问题有没有解决呀. 而取 parent.screenTop 却是正确的
你这个问题不在javascript范畴内,属于dhtml的内容。还有很多诸如此类的问题,我建议去找 Web WorkShop 参考看看。(INET.CHM)
[2005-1-27 14:53:00]
[刘如鸿]: 除了smartclient ,有没有.NET后台的RIA应用?
RIA准确的说是具备网络访问能力的“终端”的表现层架构,请注意我提到了“终端”和表现层这两个概念,因此在后台去说RIA是没有意义的,关于RIA和Smart Client,大家可以看我的blog:http://blog.csdn.net/liuruhong/archive/2005/01/10/247110.aspx,《程序员》杂志2005年第二期也作了技术专题
[2005-1-27 14:53:00]
[刘如鸿]: 动态脚本语言在RIA上应用好像很多,嘉宾看好哪个?
比较典型的可能是Bindows了,我记得我写过一个评论,就我个人,不是那么看好,http://blog.csdn.net/liuruhong/archive/2004/05/07/664.aspx
[2005-1-27 14:54:00]
嘉宾[戴立坚]: 现在flash的脚本越来越接近jscript了,我还想问个问题,flash的脚本将来在纯.net平台上会有影响吗
不是很明白 . 你可以考虑 flash中的js 与dotnet的js 的"应用" 是两回事就OK了. 需要flash就写flash的脚本 ,需要dotnet就写dotnet的脚本. 除非flash打算支持dotnet,否则这没有关系的.
[2005-1-27 14:55:00]
嘉宾[万常华]: 动态脚本语言在RIA上应用好像很多,嘉宾看好哪个?
RIA的应用接下来会越来越多,我们目前需要的是制定一个企业标准来规范这一块的开发。还必须有一个语法层面上与业务无关的框架
[2005-1-27 14:55:00]
[刘如鸿]:
大家有什么问题可以提交给futruelight,他会负责提交给嘉宾
[2005-1-27 14:59:00]
嘉宾[戴立坚]: 在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 15:00:00]
嘉宾[万常华]: 在JS里对长度超过千的数组遍历有何好的建议?? 甚至数组长度更大的
如果数组过大,我考虑是不是放弃用数组,例如用 Scripting.Dictionary 来实现查找某个对象 的方式来解决
[2005-1-27 15:00:00]
嘉宾[戴立坚]: 其实我的意思是flash的脚本不改变的话在新的.net平台js上会有影响吗?
同上.
[2005-1-27 15:00:00]
[刘如鸿]:
我想问两位嘉宾,是否考虑过脚本方面的垃圾回收,就我的了解,JScript目前做的不是特别好?但是在应对大对象的情况下,应该怎么考虑?
[2005-1-27 15:03:00]
嘉宾[戴立坚]: 有个问题不知当问不当问 window.open 的返回值 和弹出的窗口的window不相等是为什么
这个没有遇到过,也无法分析原因 。 也许在社区里提问会有其他人有那样的经验。
[2005-1-27 15:05:00]
嘉宾[万常华]: 有个问题不知当问不当问 window.open 的返回值 和弹出的窗口的window不相等是为什么
在我看来,他们是相等的,不知你当时的测试场景是什么情况。
[2005-1-27 15:06:00]
嘉宾[戴立坚]: 脚本方面的垃圾回收
MICROSOFT的这个的确做得不好。主要问题是因为JScript与DHTML都是基于COM的。COM在这个的处理上有缺陷。
我通常遇到的问题是HTML ELEMENT事件的关联,如果没有释放,那么内存就不会释放。如果主动detachEvent,那样就没有问题了。
[2005-1-27 15:07:00]
嘉宾[万常华]: 请问现在有很多软件,都想全部使用javascript实现,你认为现在到了这个时候了吗!现在的软件业可以都拖到web上来吗?
不是任何应用都适合搬到web上来的。javascript 的功能依赖于 dom 库。
[2005-1-27 15:07:00]
[刘如鸿]: 问一句, JS还能活多久, 在MS的 smart client 出来之后JS是否还有位置?
任何一个语言的存在都是有其意义的,是因为需要所以语言会产生和流行,Smart Client只是一个理念,表现层架构的一种提法,他们之间本身并没有太多的冲突,我想他能够活很长时间
[2005-1-27 15:09:00]
嘉宾[戴立坚]: 能请嘉宾朋友谈一下JavaScript中所谓的“艺术”吗?
我眼中的艺术分:
1。用很短的代码实现较多的功能。这样的代码往往都有“艺术”气息。
2。写出来的代码容易被使用,那样需要在代码上下很大的功夫,这也很“艺术”
所以我的观点时,如果代码经过不断地改进,达到越来越好,那么这个就是“艺术”了。 例如JSVM,Bindows就是艺术
[2005-1-27 15:09:00]
嘉宾[万常华]: 能请嘉宾朋友谈一下JavaScript中所谓的“艺术”吗?
我认为,如果在js的设计思想符合美学特征,那就是一种艺术了!
[2005-1-27 15:10:00]
嘉宾[戴立坚]: jscript.net微软会给它装混乱器吗?
JScript.Net会编译成 DotNet 的 dll 的。 所以使用 DotNet 的混淆器就OK了。
[2005-1-27 15:10:00]
[刘如鸿]: jscript.net微软会给它装混乱器吗?
JScript.NET目前是编译性语言,和C#,VB.NET同等的,所以所谓的混淆是没有意义的e
[2005-1-27 15:10:00]
嘉宾[戴立坚]: 所谓“脚本”都是在客户端运行的代码,那么对于一些关键性的脚本代码,如何保证其不备浏览者看到呢?
很多服务器都应用脚本技术。例如ASP由VBScript/JScript来写。
如果要运行在客户端,那么做法可以是:
1。尽量不要让客户端的人得到JS的代码。例如屏蔽右键是基本的,有很多人想出各种方法的目的是为了这个。
2。是保护JS的思想,尽量另代码变得难读。这样即使得到代码,也很难被阅读和修改。
[2005-1-27 15:12:00]
嘉宾[万常华]: 所谓“脚本”都是在客户端运行的代码,那么对于一些关键性的脚本代码,如何保证其不备浏览者看到呢?
这是 javascript 中目前“难以”解决的问题。当初设计者包括现在的解释器提供商都没有考虑这个问题,这是把js作为一个脚本语言的定位决定的
[2005-1-27 15:12:00]
嘉宾[刘如鸿]: jscript.net微软会给它装混乱器吗?
因为微软提供的混淆器或者说编码器是在源代码层次上考虑的,如果已经编译成MSIL,那么之后的混淆是其他工具去处理的
[2005-1-27 15:13:00]
[刘如鸿]: JScript.Net和现在的JScript有什么不同???
最简单的解释,JScript.NET必须在.NET上运行,而JScript可以在浏览器运行
[2005-1-27 15:13:00]
嘉宾[戴立坚]: js 是否可以摆脱浏览器的框框? 我知道用 window.createPopup();可以模拟一下,但是如果它的父页面如果关闭, 它也会跟着关闭? 有没有什么更好的办法呢?
如果脚本是运行在浏览器中的,那么就要受浏览器的限制。
这个是具体浏览器的开发问题了。如果技术上无法实现,那就看出浏览器的公司愿意不愿意提供这个功能了。
[2005-1-27 15:14:00]
嘉宾[万常华]: js提供错误处理功能了吗?就像java中的exception类
提供了,但功能比较弱,我们做一些封装,可以大致上实现java异常的处理机制。
[2005-1-27 15:14:00]
嘉宾[戴立坚]: 请问现在有很多软件,都想全部使用javascript实现,你认为现在到了这个时候了吗!现在的软件业可以都拖到web上来吗?
我认为现在是属于研发和初试阶段。
这个要看浏览器的生命力了。如果以后有东西会取代浏览器,那么基于浏览器的JS应用也会慢慢灭亡。
但是现在看来程序越来越基于浏览器了。所以我对这个方向很看好的。
但是以后也有可能有更多的编程方式。例如IE能HOST DotNet的程序,如果这个得到大的发展,那么脚本应用会受打击。
[2005-1-27 15:17:00]
[刘如鸿]: 请问现在有很多软件,都想全部使用javascript实现,你认为现在到了这个时候了吗!现在的软件业可以都拖到web上来吗?
everything in web是一件很愚蠢的事情,我想任何平台都有自己擅长的问题域,不然就没有存在的价值,有些应用使用Web是合适的,有些应用并不是合适,所以现在有人提出了“The Return of Rich Client”的论调,某种角度来说,也就是对于目前Web过热的反思
[2005-1-27 15:17:00]
嘉宾[万常华]: 我想知道javascript到底可以干什么 或者说它到底可以发展到什么地步
javascript 目前主要是一门控制语言,没有基本的IO操作定义,除了本身的计算功能以外,其他的都要借助于容器中提供的控件来实现。
[2005-1-27 15:18:00]
嘉宾[戴立坚]: JavaScript有没有好一点的调试器,我每次都是使用alert()的方法来调试的!
可以用vs.net来调试js。
不过我自己也是经常用alert。
另外拦截window.onerror也是好方案。
在IE中。能够得到 window.onerror.caller 的。这样能够得到一个JS的StackTrace(调用的函数顺序表),这对调试很有帮助。
[2005-1-27 15:19:00]
[刘如鸿]: 目前国内有没有像Bindows这样规模的JS开源项目,想了解一下
王常华的JSVM就是一个这样的框架,你可以在www.51js.com上得到更多的信息
[2005-1-27 15:19:00]
嘉宾[戴立坚]: 请推荐几个javascript 的调试工具,谢谢
首推选 vs.net 。 在vs.net里的调试里的关联进程,选上Script就OK了。
[2005-1-27 15:20:00]
嘉宾[万常华]: 目前国内有没有像Bindows这样规模的JS开源项目,想了解一下
据我所知,类似bindows关注于web UI 方面的项目国内就有几个,但目前没有开源。
[2005-1-27 15:21:00]
[刘如鸿]:
大家有问题尽快提交给futurelight,聊天活动剩下10分钟结束
[2005-1-27 15:21:00]
嘉宾[戴立坚]: 问一句, 如何在IE里也实现 watch() ? watch在NS里是被支持的
我没有接触过 NS 中的 watch() 。 不如说说 watch 是做什么的?然后看看在IE中怎样实现同样的功能?
[2005-1-27 15:21:00]
嘉宾[万常华]: 一个“良好的组织结构和规范”这样的规范应该从哪些方面考虑的? )
前面已经回答
[2005-1-27 15:23:00]
嘉宾[戴立坚]: 刚才玩WALLOP突然想起一个问题来~~跟梅花雪的问题类似。FLEX这样的技术出现会对JS产生什么样的影响。
就好像饭与面包的感觉。
如果某一天大家都认为面包好吃了,那么就没有人吃饭了。
所以饭和面包都要努力呵呵。
FLEX相当于新的技术和应用。但是具体能不能代替JS的应用,具体是看他们的优点缺点和开发人员的选择了。
[2005-1-27 15:23:00]
嘉宾[戴立坚]: 能不能说明一下如何拦截window.onerror,这个方法没有用过!
例如 window.onerror=function(msg,file,line){ alert(msg); return true ;}
[2005-1-27 15:24:00]
嘉宾[戴立坚]: 请问:为什么没有组织,专门做一些控件!,来统一各浏览器的差距!
其实是有一些这样的代码的。
例如很多人使用 HTMLElement.prototype.__defineGetter__("outerHTML",..)的方法来统一这些应用。
而Bindows在在另外的模式上去屏蔽浏览器的细节。
不过这是艰巨的工作,还要看各浏览器的制造商的脸色。。
[2005-1-27 15:26:00]
嘉宾[万常华]: 能不能说明一下如何拦截window.onerror,这个方法没有用过!
为什么要拦截呢? 既然有异常,我们或者处理,或者向上层容器抛。
我主张js 开发中应多用
try{
} catch(){}
如果非要忽略,可以通过 window.onerror = function(){return false}
来实现
[2005-1-27 15:27:00]
嘉宾[戴立坚]: 我觉得对于不同浏览器还是针对每个浏览器作一套方案的比较好,而不是写很长很长的脚本去适应他们
那样也有缺点的。我曾经试过这样做。 但是当需要修改代码时,两边同时改,同时测试,所费的时间更多。
[2005-1-27 15:29:00]
嘉宾[万常华]: 请问脚本会不会,被各种组织的框架给挤掉!
脚本自己也可以有框架啊
[2005-1-27 15:30:00]
嘉宾[万常华]: 请问在JS里面能否抛出一个自定义的错误,就像VBS里面的Err.Raise一样?
可以 throw new Error(errNum,errDescription);
[2005-1-27 15:31:00]
嘉宾[刘如鸿]: HTC是否只有IE支持?
是的,HTC是IE自己的扩展,Mozilla也有类似的东西,就是XUL
[2005-1-27 15:31:00]
[刘如鸿]: 使用javascript编写游戏,是否有前途?
有人这么做了,有没有前途我不敢说
[2005-1-27 15:31:00]
嘉宾[戴立坚]: 使用javascript编写游戏,是否有前途?
我觉得,如果没有人与你竞争,那就是有前途的。
否则用JS写大型的程序会很费时间。
[2005-1-27 15:32:00]
嘉宾[戴立坚]: 即使你写兼容的脚本,也是一样要改两个地方,只是要改的地方少一些:)
是的。但是这样会不容易出错误。
我以前经常犯的错误是,把代码从一边复制到另外一边,总是忘记修改一些细节。
[2005-1-27 15:33:00]
嘉宾[万常华]: 不再try {}catch()块里面 throw语句有效嘛?
有效,如果执行域中没有catch的话将被抛至顶容器,即 window 对象。
[2005-1-27 15:34:00]
嘉宾[刘如鸿]:
感谢大家的积极参与,聊天活动到此结束,如果大家有任何问题,可以通过Email和我们的嘉宾联系,他们的联系方式可以在个人介绍中找
[2005-1-27 15:33:00]
[刘如鸿]:
《msdn开发精选》将一如既往地为您呈现精彩的技术聊天,如果大家对于杂志和我们的活动有什么意见和建议,欢迎和我联系,我的email:liurh@csdn.net,再一次谢谢大家的参与
[2005-1-27 15:34:00]
posted on 2005-04-30 14:45  雪美·考拉  阅读(1317)  评论(1编辑  收藏  举报