coffeescript类中的实例变量和常量

时间:2013-07-23 13:28:08

标签: javascript coffeescript

我正在尝试在coffeescript中定义一个类,以便在我的rails项目中使用它。我正在努力使用定义CLASS常量的语法并引用它们,这是我到目前为止所做的:

class Project

  inputFields :
    title: '#title'

  calculateDataList : [
    @inputFields.title
  ]

但是浏览器抱怨:

Uncaught TypeError: Cannot read property 'title' of undefined

我不确定这里的语法是什么。谁能帮助我?

谢谢,

3 个答案:

答案 0 :(得分:1)

这是CoffeeScript类的基本语法:

class Add
  constructor: (number1, number2) ->
    @number1 = number1
    @number2 = number 2

  run: ->
    @number1 + @number2

我认为这样的代码适用于您的代码:

class Project
  inputFields: ->
    title: '#title'

  calculateDataList: ->
    [this.inputFields().title]

Project是一个类,inputFields()calculateDataList()是方法。要在inputFields()中调用calculateDataList()方法,请使用this关键字。

使用以下命令运行代码:

p = new Project
p.calculateDataList() 

答案 1 :(得分:1)

您必须保存对原型的引用。试试这个:

class Project

  inputFields :
    title: '#title'

  calculateDataList : [
    Project::inputFields.title
  ]

答案 2 :(得分:0)

实际上,您的代码无法编译。

我不确定你想要什么,但这个coffeescript代码:

class Project

    inputFields :
        title: '#title'

    calculateDataList : [@inputFields.title]

编译以下Javascript:

// Generated by CoffeeScript 1.6.3
(function() {
  var Project;

  Project = (function() {
    function Project() {}

    Project.prototype.inputFields = {
      title: '#title'
    };

    Project.prototype.calculateDataList = [Project.inputFields.title];

    return Project;

  })();

}).call(this);