javascript - CoffeeScript 如何继承属性?
天蓬老师
天蓬老师 2017-04-10 14:45:26
0
2
371

比如我有一个大类

class Shapes
    defaultFill   = '#9999D2'
    defaultStroke = '#2727A6'
    overFill      = '#FFF076'
    overStroke    = '#ED1818'

然后有一个继承它的类

class Dots extends Shapes
    constructor: ->
        @defaultFill = defaultFill

我发现这样写是错误的,那应该怎么去使用父类的属性呢?谢谢

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(2)
Ty80

@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
大家讲道理
this.constructor.defaultFill

参考:http://coffeescript.org/#classes

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板