在初始化

时间:2015-05-14 18:04:18

标签: javascript

我是React.js的新手,我发现了一件让我困难的棘手问题。

我在创建该类的实例时尝试使用类的一个函数,但似乎我无法做到这一点。

更具体一点:

我有一个名为PersonCalendar的类,在这个类中,我还有一个名为calculatedSalary的函数,在这个类中,我有另一个名为salary的属性。

现在我尝试通过执行以下操作来创建此类的实例:

var personCal = new PersonCalender({salary: personCal.calculatedSalary(138)})

我也试过这个:

var personCal = new PersonCalender({salary: this.calculatedSalary(138)})

他们都没有工作。

当我执行代码时,代码将在此行停止,表示函数未定义。

任何人都可以给我一些关于如何应对棘手情况的建议吗?

非常感谢

3 个答案:

答案 0 :(得分:0)

这与React无关。在它存在之前,你根本无法访问它。因此,在实例存在之前,您无法访问实例的功能。

我不知道PersonCalender正在做什么或者你如何处理它的论点,但似乎你想计算里面的构造函数:

function PersonCalender(someNumber) {
    this.salary = this.calculatedSalary(someNumber);
}

如果calculatedSalary确实需要访问实例,请将其设为静态:

PersonCalender.calculatedSalary = function(...) { ...};

var personCal = new PersonCalender({salary: PersonCalender.calculatedSalary(138)})

我建议您阅读MDN article about OOP in JS以便更熟悉此主题。

答案 1 :(得分:0)

由于两个不同的原因,这两行是错误的:

  1. var personCal = new PersonCalender({salary: personCal.calculatedSalary(138)})目前无法工作,因为personCalundefined。只有在行执行后才会有任何值
  2. var personCal = new PersonCalender({salary: this.calculatedSalary(138)})可能无效,因为this不是PersonCalendar,并且没有calculatedSalary方法。
  3. 您可能应该更改构造函数以在其中接收集合salary的参数。

答案 2 :(得分:0)

假设 before_update :set_contest_not_updated def set_contest_not_updated self.contest_updated = false end 是一个React组件:您应该将薪水传递给您的React组件并在内部进行计算:

PersonCalendar

其他人已经指出你无法访问不存在的对象的属性。