2016-12-04 2 views
0

В настоящее время я наткнулся на проблему со связью, где считаю, что она ухудшает мою производительность. Вызов привязки при каждой рекурсии кажется довольно плохим.Элегантная и эффективная альтернатива привязке()

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

Что было бы идеальным в этом случае?

class AlotMonster { 
    constructor() { 
     this.names = ['a lot', 'alot']; 
     this.method(); 
     } 

    method() { 
     let choice = Math.round(Math.random()); 
     let currentName = this.names[choice]; 

     console.log(currentName); 

     requestAnimationFrame(this.method.bind(this)); 
     } 
} 

new AlotMonster(); 
+5

просто называют его один раз в конструкторе 'this.boundMethod = это. method.bind (this); 'и использовать' this.boundMethod' в последующих вызовах. – georg

+0

@georg серьезно? Не думал об этом – Asperger

+0

@georg может ли это быть проблемой? я имею в виду – Asperger

ответ

1

Вы могли бы вместо того, чтобы просто использовать функцию стрелки, которая имеет лексическое this связывания. Это не выглядит, как вы делаете использование прототипной природы вашего метода и хочет быть bount к определенному экземпляру равно:

class AlotMonster { 
    constructor() { 
     this.names = ['a lot', 'alot']; 

     this.method =() => { 
      let choice = Math.round(Math.random()); 
      let currentName = this.names[choice]; 

      console.log(currentName); 

      requestAnimationFrame(this.method); 
     }; 

     this.method(); 
    } 
} 

new AlotMonster(); 
+0

, это лучше по производительности? – Asperger

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