CoffeeScript 如何继承属性?
比如我有一个大类
class Shapes
defaultFill = '#9999D2'
defaultStroke = '#2727A6'
overFill = '#FFF076'
overStroke = '#ED1818'
然后有一个继承它的类
class Dots extends Shapes
constructor: ->
@defaultFill = defaultFill
我发现这样写是错误的,那应该怎么去使用父类的属性呢?谢谢
chunyi
10 years, 2 months ago
Answers
this.constructor.defaultFill
狂战拯救世界
answered 10 years, 2 months ago
@huandu
的方法很好,但是解决不了题主的问题,因为基类写的有点问题。
可以看下下面这段代码编译出来的结果:
class Shapes
defaultFill = '#9999D2'
@defaultStroke = '#2727A6'
overFill : '#FFF076'
@overStroke : '#ED1818'
-->
Shapes = (function() {
var defaultFill;
function Shapes() {}
defaultFill = '#9999D2';
Shapes.defaultStroke = '#2727A6';
Shapes.prototype.overFill = '#FFF076';
Shapes.overStroke = '#ED1818';
return Shapes;
})();
因此,题主基类中的
defaultFill
声明其实是在一个闭包中,无法在子类中访问到。
应该写成:
class Shapes
@defaultFill = '#9999D2'
class Dots extends Shapes
constructor: ->
@defaultFill = @constructor.defaultFill
迪迪飞鸿工作室
answered 10 years, 2 months ago