[转贴]“Web开发中的JavaScript设计艺术”聊天实录

聊天主题:Web开发中的JavaScript设计艺术
聊天时间2005127日星期四下午200—330

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

 

详细聊天实录:

[刘如鸿]:

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

[2005-1-27 13:54:00 ]

[刘如鸿]:

以下是他们的个人介绍:

Lostinet(戴立坚)2004年微软最有价值的专家,擅长于脚本开发和基于ASP.NET企业应用解决方案实现,主要作品为RaneCBMLostinet.Web控件集,CuteEditor 4CuteChat等等。可以通过http://blog.joycode.com/lostinet/ 访问他的个人Blog。现为无业人士,在深圳学英语和减肥。

[2005-1-27 13:55:00 ]

[刘如鸿]:

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

[2005-1-27 13:56:00 ]

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

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

2. 2:002: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 创建出来的对象或MozillaXMLHttpRequest . 但是 JS 本身带的面向对象的功能很弱 . 适合做一些简单的类库. 但很难达到大规模的类库的应用.

[2005-1-27 14:10:00 ]

[刘如鸿]:

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

[2005-1-27 14:11:00 ]

嘉宾[戴立坚]:

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

[2005-1-27 14:12:00 ]

嘉宾[万常华]:

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

[2005-1-27 14:12:00 ]

嘉宾[戴立坚]:

当然 , MSBehavior(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来访问"本站"的内容 . 这个IEMOZILLA都支持.

[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 . 更有些程序会使用MSScripting技术来加载脚本来扩充程序的功能. 这个和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文件的默认打开方式不变的话)

WScriptIE中运行脚本不同的地方是,你使用的是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 却是正确的

这个我没有测试过. 如果你的经验是正确的,那么这是一个IEBUG.

但你可以考虑使用top.screenTop,然后计算各framewindow.topheight来计算出准确的值.

[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是没有意义的,关于RIASmart 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 dotnetjs "应用" 是两回事就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的这个的确做得不好。主要问题是因为JScriptDHTML都是基于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 ]

嘉宾[戴立坚]: 所谓脚本都是在客户端运行的代码,那么对于一些关键性的脚本代码,如何保证其不备浏览者看到呢?

很多服务器都应用脚本技术。例如ASPVBScript/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应用也会慢慢灭亡。

但是现在看来程序越来越基于浏览器了。所以我对这个方向很看好的。

但是以后也有可能有更多的编程方式。例如IEHOST 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 的。这样能够得到一个JSStackTrace(调用的函数顺序表),这对调试很有帮助。

[2005-1-27 15:19:00 ]

[刘如鸿]: 目前国内有没有像Bindows这样规模的JS开源项目,想了解一下

王常华的JSVM就是一个这样的框架,你可以在www.51js.com上得到更多的信息

[2005-1-27 15:19:00 ]

嘉宾[戴立坚]: 请推荐几个javascript 的调试工具,谢谢

首推选 vs.net vs.net里的调试里的关联进程,选上ScriptOK了。

[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() ? watchNS里是被支持的

我没有接触过 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.οnerrοr=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支持?

是的,HTCIE自己的扩展,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 ]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值