В C ++ вам нужно специально объявить функцию как virtual
:
class BaseClass {
virtual void speak () {
...
}
};
Вам необходимо зациклировать методы и вызвать .bind
за каждую итерацию, чтобы ваш подход работал. Например:
const methods = ['_setDirty', '_a', '_b', ...];
methods.forEach(method => this[method] = this[method].bind(this));
Методы должны быть назначены с помощью цикла (в другом ответе уже упоминается):
for (const prop of ['_setDirty', /* ... */])
this[prop] = this[prop].bind(this);
Использование стрелок вместо прототипов позволяет пропустить bind
, но это единственное преимущество, связанные методы прототипа, как правило, предпочтительнее из-за их гибкости.
Поскольку React используется, можно с уверенностью предположить, что используется транспилер, поэтому проект не ограничивается ES6.
Декораторы могут быть удобно использованы в ES.Next-коде для связывания методов, например bind-decorator
:
import bind from 'bind-decorator';
...
constructor(props: SignupProps) {
super(props);
}
@bind
_setDirty() {...}
...