2015-05-14 2 views
0

Я новичок в React.js, и я нашел одну сложную вещь, которая меня устраивает.Вызвать функцию самого экземпляра, когда она инициализирована

Я пытаюсь использовать одну функцию класса, когда создаю экземпляр этого класса, но похоже, что я не могу этого сделать.

Чтобы быть более конкретным:

У меня есть класс с именем PersonCalendar и в этом классе, у меня есть функция, называемая также calculatedSalary, в этом классе, у меня есть еще один атрибут salary.

Теперь я пытаюсь создать экземпляр этого класса, выполнив следующие действия:

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

Я также попытался это:

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

Ни один из них работают.

Когда я выполняю код, код останавливается в этой строке, говоря, что функция не определена.

Может ли кто-нибудь дать мне какое-нибудь предложение о том, как справиться с сложной ситуацией?

Большое спасибо

+0

В вашем первом примере кода 'personCal.calculatedSalary (138)' не определено, поскольку объект 'personaCal' еще не существует. –

+0

Попробуйте 'var personCal = new PersonCalender();' затем следует 'personCal.salary = personCal.calculatedSalary (138);'. –

ответ

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, чтобы сделать себя более знакомы с этой темой.

0

2 линии неверны 2 причинам:

  1. var personCal = new PersonCalender({salary: personCal.calculatedSalary(138)}) не будет работать, так как personCal является undefined в это время. Только после того, как линия будет выполнена, она будет иметь значение
  2. var personCal = new PersonCalender({salary: this.calculatedSalary(138)}), вероятно, не будет работать с this не является PersonCalendar и не имеет метода calculatedSalary.

Возможно, вы должны изменить свой конструктор, чтобы получить аргумент salary внутри.

0

Предполагая PersonCalendar является Реагировать компонент: вы должны пройти зарплату на ваш React компонента и сделать расчет внутренне:

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

var PersonCalendar = React.createClass({ 
    componentDidMount: function() { 
     this.setState({ 
     computedSalary: this.calculatedSalary(this.props.salary) 
     }); 
    }, 
    render: function() { 
    ... use this.state.computedSalary 
    } 
}); 

Другие уже указывали на то, что вы не можете получить доступ к свойствам на несуществующий объект.

Смежные вопросы