【发布时间】:2013-09-10 12:38:04
【问题描述】:
我正在玩奇妙的Rickshaw 库,它使用Prototype's class-based OOP system。这包括extend 方法,它允许子类扩展父类中的方法,如下所示:
defaults: function() {
return {
tension: 0.8,
// etc...
};
}
defaults: function($super) {
return Rickshaw.extend( $super(), {
fill: true,
// etc...
} );
}
我正在尝试在 CoffeeScript 中找到执行相同操作的语法,以便 CoffeeScript 处理类继承而不是原型。你能帮忙吗?
编辑
感谢@tomahaug 的回答,我得到了这个工作,现在我意识到有更好的方法。虽然$super 是Prototype 功能,但extend 实际上是在Prototype 和Rickshaw 顶级对象中定义的,如下所示:
extend: (destination, source) ->
for property of source
if (source.hasOwnProperty(property))
destination[property] = source[property]
destination
所以利用这个方法,解决方案是这样的:
defaults: () ->
Rickshaw.extend super(),
fill: true,
// etc...
因此,如果事实证明这是以某种方式内置于 CoffeeScript 中的,那么可以进一步改进的唯一方法。
【问题讨论】:
-
你想把这两个例子翻译成 CoffeeScript 还是想问 CoffeeScript OOP 系统是否可以做类似的事情?
-
我已经将它翻译成 CoffeeScript,而且它大部分都在工作。正是这种模式让我苦苦挣扎。
标签: javascript coffeescript prototypejs rickshaw