浏览 2502 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-13
Event.observe(window,'load',function(){ var Table = Class.create(); Object.extend(Table.prototype,{ initialize : function(){ this.table = document.createElement('table'); document.body.appendChild(this.table); this.row = null; }, putRow : function(){ this.row = this.table.insertRow(); return this; }, putCell : function(context){ this.row.insertCell().innerHTML = context; return this; } }); var table = new Table(); table.putRow()//这就像java中调用方法的样子,而且方便插入单元格 .putCell("<input />") .putCell("<input type=button />") .putCell("<input />") .putCell("<input />"); }); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-13
恭喜你,你自动的走向jQuery 的核心设计了。
在jQuery中, 这种语法糖很是让人舒服。 这种语法很难实现,或者让人很不习惯。 这很象Java中immutable。你可以看看String 类的实现 "hello".substring().substring().......。 例如: class Point{ public Point(x,y){} Point setX(int x){return new Point(x,this.y);} Point setY(int y){return new Point(this.x,y);} } new Point(1,2).setX(3).setY(34); 你能接受这种代码方式吗?如果可以,那你的同伴可以吗? 我的观点是:特定的功能或函数用这种immutable类方式。 如jQuery对dom的处理,把javascipt所有功能都是以dom Selector为核心,都是以DOM操作为起点。 推荐读读jQuery源码。 ![]() |
|
返回顶楼 | |
发表时间:2007-07-14
从没接触过jquery,只是听说过,写这个的时候也只是想把java中的一些好的方式写出来,以为老用hibernate,他的查询方式就是这样的,我觉的很方便也很直观,谢谢楼上,我会去看看的.
|
|
返回顶楼 | |
发表时间:2007-07-15
这跟是不是immutalbe没有关系。immutable是所谓的不变类,即对象状态不会发生变化。java的所有基本类型的包装类都是immutable的,也就是substring之类的方法并不会改变对象的状态,而是返回一个新的对象。
至于连续调用的语法糖衣,是在模仿smalltalk。 |
|
返回顶楼 | |
发表时间:2007-07-15
Immutable是一个很重要的设计方式,不过你上面那个point的例子,方法名就不能叫做setX和setY了。set方法按约定是要改变状态的。所以不用担心你的同伴不能接受这个方法,而是应该担心他会写出这样的:
p.setX(3); p.setY(3); 所以起对名字很重要。 |
|
返回顶楼 | |
发表时间:2007-07-15
我觉得和 immutalbe 有很大的关系。甚至和函数式“无副作用”特性有一定关系。
Point只是举个例子,肯定不能随便用的。 我的观点是:特定的功能或函数用这种immutable类方式。 |
|
返回顶楼 | |
发表时间:2007-07-15
连续调用的语法糖衣为什么跟immutable有关系?任何返回对象的方法都可以连续调用。事实上模仿smalltalk的对于一个对象连续发送消息,恰恰与immutable经常会返回新对象的方式全然相悖。
|
|
返回顶楼 | |