【发布时间】:2011-09-04 22:34:51
【问题描述】:
我有一个鼠标事件类。我正在使用 dojo b/c 我喜欢它的 OO 方法
dojo.declare("MouseObject", null, {
constructor: function(){},
onclick : function(){...},
_onClick : function(){...}
});
_onClick() 侦听窗口生成的鼠标按下/释放事件并确定是否发生了点击。如果有,则调用onClick()。 onClick() 执行所有可能点击的通用功能,因此每次用户点击时都需要调用它。
有时用户可能想要扩展onClick() 的功能,是否可以在不复制粘贴的情况下合并原始功能?我能想到的两种我都不喜欢的方法是
dojo.declare("MouseObjectChild", [MouseObject], {
constructor: function(){},
onclick : function(){this.inherited(arguments);...}
});
它的缺点是我必须不断创建我并不真正需要的新类,并且两个添加一个中间函数
dojo.declare("MouseObject", null, {
constructor: function(){},
onclick : function(){this._onClick()...}, //child onClick
_onClick : function(){...}, //parent onClick
__onClick : function(){...} //listener
});
但这看起来不像是好的代码
wrt 赏金,我希望获得有关如何最好地解决程序与用户交互的专家建议。如果程序提供了一个关键功能,例如在画布上画一个圆圈,那么用户如何最好地与之交互。如果用户想在圆圈后面画一个三角形怎么办?圆圈前面有一个正方形?然后程序必须提供如下的 pre 和 post 方法:
beforeDraw();
draw();
afterDraw();
这算不算好的设计?我是否应该将函数指针放在一个数组中并按顺序调用它们?
【问题讨论】:
标签: javascript function dojo reusability redefine