第1楼 2008-01-14 07:20 obnijeh 写道:
Ajax系统内核代码分析,Web应用平台开发探索(QQ群:7210746)
原创:Alz
Ajax系统内核代码分析,Web应用平台开发探索(QQ群:7210746)
一、引子
关注各种Ajax框架,JS语言本身,努力打造平台独立的web应用平台,寻求共同爱好者。
为达到吸引具有共同兴趣的爱好者之目的,出题如下:
1)下面的代码为什么后者比前者的执行速度快?
创建对象:
var obj1 = new Object();
var obj2 = {};
创建数组:
var arr1 = new Array();
var arr2 = [];
2)下面的代码是如何说明使用原型方式创建对象比使用构造函数方式创建对象更具优势的?
<script type="text/javascript">
<!--
function ClassA(){}
ClassA.prototype.fun = (alert("ClassA"), function(){});
var a = new ClassA();
var b = new ClassA();
//-----
function ClassB(){
this.fun = (alert("ClassB"), function(){});
}
var a = new ClassB();
var b = new ClassB();
//-->
</script>
3)下面的数组的四个方法,对称的同时,为什么push方法又特殊在什么地方?
unshift (头部压入) shift (头部弹出)
push (尾部压入) pop (尾部弹出)
4)dojo,prototype,bindows各自的对象创建方式是什么?各自的模拟类继承原理是什么?
二、关于引子中问题的说明
其实每个问题都可以在退一步,从问题中可以提取出一个更隐讳的问题和问题的答案。
1)下面的代码那个执行速度更快?答案是后者。
2)为什么说使用原型方式创建对象比使用构造函数方式创建对象更具优势?代码就是答案。
3)数组的下列四个操作方法unshift,shift,push,pop,从对称性角度上那个有些特殊?
答案push。
4)这个问题是我想和大家一起讨论的,本贴之目的。
其实,不是想让看到这些问题的人,直接回答这几个问题,而是往这个几个问题的深层
去考虑,深入到JS语言的内部。JS本是很简单的,但是当简单的语法相互迭代的时候,JS变
得复杂了起来,如何把控这种复杂度,有待深入的研究一下。
三、从Ajax框架开始延伸本文主题
JSVM从底层规划了代码的组织和面向对象的(模拟)类书写规范,但是有人说它不伦不
类,甚至连Ajax框架都算不上。Bindows在浏览器内部实现了丰富而完美的类似Windows风格
的UI组件库,但是有人嫌它加载速度太慢,太庞大,而很难去使用。dojo,砍去了两者个的
缺点,加上背后知名厂商的支持,正在蓬勃发展。prototype,小巧而全面的内核库函数是
它能够普及到现在这种程度的主要原因,但是对原生环境的高度渗透无疑是它日后往大应用
方向发展的拦路石。还有好多好多类似的框架,各有优点,但不知道那个最终可以统一Ajax
开发?有人看好dojo,希望它能走好。
bindows,jsvm,dojo,prototype,dwr,gwt,qooxdoo,jQuery,ActiveWidgets,ext,jsLINB,
yui,sajax,这些是我知道的Ajax Framework,有对这些系统了解或者感兴趣的欢迎加入我的
QQ群:7210746,尤其欢迎对各种Ajax Framework有整体性研究和了解的朋友。分析各种Ajax
系统打造更好的Web应用平台是本群的目标。