Так возьмите следующий простой яваскрипта класс фрагмент кода:Каковы решения для избежания «того»?
var Class = function() {
this.publicvar = 1;
this.privileged = function() {
return this.publicvar;
};
};
var c = new Class();
setTimeout(c.privileged, 1); //c.this -> window
Очевидно, что это не будет работать, «это» будет объект окна. Таким образом, на этом этапе мы можем сделать var, который = this, и использовать this.publicvar, ИЛИ, мы можем это сделать.
setTimeout(function() { c.privileged() }, 1); //c.this -> Class
Какое большое решение и легко исправить, я теперь не надо ставить «что» повсюду в моем классе. Не говоря уже о том, что использование «этого» становится намного сложнее при использовании объекта object.prototype.publicMethod.
Итак, мой вопрос: какие другие случаи, когда вам нужно будет беспокоиться о том, что «это» в «this.publicvar» привязано к контексту окна и каково решение для каждого? (Я надеюсь, что у нас есть решение для каждого из них, так что я никогда не должны использовать это :)