我是React.js的新手,我发现了一件让我困难的棘手问题。
我在创建该类的实例时尝试使用类的一个函数,但似乎我无法做到这一点。
更具体一点:
我有一个名为PersonCalendar
的类,在这个类中,我还有一个名为calculatedSalary
的函数,在这个类中,我有另一个名为salary
的属性。
现在我尝试通过执行以下操作来创建此类的实例:
var personCal = new PersonCalender({salary: personCal.calculatedSalary(138)})
我也试过这个:
var personCal = new PersonCalender({salary: this.calculatedSalary(138)})
他们都没有工作。
当我执行代码时,代码将在此行停止,表示函数未定义。
任何人都可以给我一些关于如何应对棘手情况的建议吗?
非常感谢
答案 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)
由于两个不同的原因,这两行是错误的:
var personCal = new PersonCalender({salary: personCal.calculatedSalary(138)})
目前无法工作,因为personCal
为undefined
。只有在行执行后才会有任何值var personCal = new PersonCalender({salary: this.calculatedSalary(138)})
可能无效,因为this
不是PersonCalendar
,并且没有calculatedSalary
方法。您可能应该更改构造函数以在其中接收集合salary
的参数。
答案 2 :(得分:0)
假设 before_update :set_contest_not_updated
def set_contest_not_updated
self.contest_updated = false
end
是一个React组件:您应该将薪水传递给您的React组件并在内部进行计算:
PersonCalendar
其他人已经指出你无法访问不存在的对象的属性。