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

比如我有一个大类

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

然后有一个继承它的类

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

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

天蓬老师
天蓬老师

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

reply all (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

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!