Я тестирую классы в ES6 с использованием traceur, но он не работает, как я ожидал.Справочные методы из другого класса в traceur
Я пытаюсь использовать метод в качестве ссылки в другом классе, но когда он называется, я получаю ссылку на класс вызывающего абонента при чтении значения this
.
Вот мой код:
class A {
constructor(anotherMethod){
this.anotherMethod = anotherMethod;
this.name = "A";
}
myMethod(){
console.log(this.name);
this.anotherMethod();
}
}
class B {
constructor(){
this.a = new A(this.myMethod);
this.name = "B";
}
myMethod(){
console.log(this.name);
}
}
var c = new B();
c.a.myMethod();
Мой ожидаемый журнал:
A
B
Но это показывает:
A
A
возможно дубликат [Как получить доступ к правильной \ 'это \'/контекст внутри обратного вызова?] (HTTP: //stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context-inside-a-callback) –
* ", но когда он называется, я получаю ссылку на класс вызывающего абонента при чтении значения 'this'" * Это просто, как это работает в JavaScript. См. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this –
@FelixKling Я это понимаю. Но это сбивает с толку, потому что у вас нет универсальной переменной для доступа к текущему экземпляру класса. Вы не можете полагаться на эту переменную, если не уверены в том, как ваши методы будут использоваться другими. – Igor