论坛首页 Web前端技术论坛

实现了一个像javah中method().method() 的小功能

浏览 2501 次
精华帖 (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 />");
    });
   发表时间: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源码。
0 请登录后投票
   发表时间:2007-07-14  
从没接触过jquery,只是听说过,写这个的时候也只是想把java中的一些好的方式写出来,以为老用hibernate,他的查询方式就是这样的,我觉的很方便也很直观,谢谢楼上,我会去看看的.
0 请登录后投票
   发表时间:2007-07-15  
这跟是不是immutalbe没有关系。immutable是所谓的不变类,即对象状态不会发生变化。java的所有基本类型的包装类都是immutable的,也就是substring之类的方法并不会改变对象的状态,而是返回一个新的对象。

至于连续调用的语法糖衣,是在模仿smalltalk。
0 请登录后投票
   发表时间:2007-07-15  
Immutable是一个很重要的设计方式,不过你上面那个point的例子,方法名就不能叫做setX和setY了。set方法按约定是要改变状态的。所以不用担心你的同伴不能接受这个方法,而是应该担心他会写出这样的:
p.setX(3);
p.setY(3);
所以起对名字很重要。
0 请登录后投票
   发表时间:2007-07-15  
我觉得和 immutalbe 有很大的关系。甚至和函数式“无副作用”特性有一定关系。

Point只是举个例子,肯定不能随便用的。
我的观点是:特定的功能或函数用这种immutable类方式。


0 请登录后投票
   发表时间:2007-07-15  
连续调用的语法糖衣为什么跟immutable有关系?任何返回对象的方法都可以连续调用。事实上模仿smalltalk的对于一个对象连续发送消息,恰恰与immutable经常会返回新对象的方式全然相悖。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics