JS 现在也许还不行 未来会更好

html5+JS,现在正热火朝天,谷歌曾鼓吹"百分之百的Web"。为什么?1一次编写,到处运行。2不用下载额外的客户端环境,一个浏览器就搞定。3客户端程序部署很方便,更新也很容易。4随着webGL的推出,用JS在浏览器上绘制3D也成为现实。

虽然热火朝天,但纯html+JS的应用还不多。不少项目最终还是选择本地API。难道html5+JS只是陷阱?

分析了下,感觉JS在如下方面还是不足

1:JS虽然可以面向对象,但用起来还不方便

下面是来自火狐的官方例子

//声明对象
function Person() {
  this.gender = null;//属性
}
 //方法
Person.prototype.sayGender = function()
{
  alert(this.gender);//不得不用大量this,而this可不一定指向当前对象哦,下面会介绍
};
//继承
function Student() {
  Person.call(this); // 还要自己手工调用父构造函数
}
//声明是继承
Student.prototype = Object.create(Person.prototype);



不但缺乏访问的保护(没private),没有明确的接口类,而且太多机械的内容(prototype、this)要手动补充。这增大了由于程序员不小心而导致的偶发性的故障,显然限制了它在大型程序中的应用。

另外this的指向会随着JS的回调函数而改变,可以参考http://www.jb51.net/article/22040.htm

2:编辑器还是不够强

如果JS有强大的编辑器,那可以缓解手动补充机械内容带来的错误。然而遗憾的是,JS编辑器在面向对象、多JS文件编程时,代码的动态分析力短板马上显现出来。像Dreamware,一旦按JS标准面向对象写代码,自动联想直接变幻想了。另外动态检查效果也比较低(毕竟JS中空引用是合法的,解释器分不出是用户故意的还是bug)。

3:DOM与数据杂糅

过去HTML只是为了表现而诞生,JS的主要任务之一就是操纵表现,即DOM。开发纯html+JS,很容易将DOM和业务数据混杂。


不过事情正向好的方向发展,像JS面向对象与DOM与数据杂糅问题,目前已经推出了大量的扩展框架(Backbone、Ember、AngularJS等)。但随之引入了框架还互不兼容的问题,而且框架停止维护的风险也不是不存在。或许今后JS委员会会采纳优秀的标准,JS会原生支持面向对象。而扩展框架也许会“分久必合”而迎来大统一时代,就像Jquery和YUI。而编辑器问题,随着老牌软件如eclipse,DreamWare的升级,RIB,Consrtruct的推广,编辑器肯定会更智能方便。






参考:

微软、谷歌、Twitter对HTML5地位问题的争论 http://www.cnbeta.com/articles/147157.htm

Introduction to Object-Oriented JavaScript  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

jQuery AJAX回调函数this指向问题 http://www.jb51.net/article/22040.htm






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值