Вы можете использовать синтаксис жирной стрелки, который привязывается к лексической области действия функции
function doIt() {
this.f = () => {
console.log("f called ok");
this.g();
}
this.g = () => {
console.log("g called ok");
}
}
После этого вы можете попробовать
var n = new doIt();
setTimeout(n.f,1000);
Вы можете попробовать его на babel или, если ваш браузер поддерживает ES6 на jsFiddle .
К сожалению, синтаксис класса ES6, по-видимому, не позволяет создавать функции, лексически связанные с этим. Я лично думаю, что это может сделать это. РЕДАКТИРОВАТЬ: Кажется, есть экспериментальная функция ES7, чтобы позволить ему .