0

Есть модуть, который принимает callback, чтобы передать в него параметры.
Я создал объект для работы с этим модулем

function MyObject(args){
    this.prop = args.prop;
}

MyObject.prototype = { setArgs: function(args){ // здесь нужно обратиться к // this, но это невозможно, так как // в модуле подменяется контекст } }

Метод setArgs я передаю в модуль, как callback, но обращаться к this я уже не могу, хотя только для этого я и создал класс-объект MyObject... Вот как можно и как более правильно обойти подмену контекста? ...

В таком положении, даже если proxy сделать, то модуль и ему контекст подменит..

vas
  • 1,757
  • 1
  • 21
  • 43

1 Answers1

1

Не очень удобный способ, но самое простое, что приходит в голову, это сделать:

this.setArgs=this.setArgs.bind(this); //в конструкторе.

Я немного изменил ваш пример, чтобы не писать огромное api снаружи, как-то так это работает:

http://jsfiddle.net/oceog/ymzxz9qy/

zb'
  • 18,100
  • @eicto, Спасибо! Вы говорите, что это самое простое. А что будет самым правильным? – vas Aug 31 '14 at 12:03
  • Самый правильный с точки зрения ООП? – vas Aug 31 '14 at 12:17
  • Не знаю, если честно, этот в принципе неплохой, если, наследуя, вы вызываете конструктор родителя, две проблемы - конструктор надо вызывать, и при bind рождается новая функция, вообще с точки зрения OOP метод, который может быть вызван с со сменой контекста, должен это ожидать. Т.е. контекст менять, но не ломаться... короче, быть что-то типа статического. – zb' Aug 31 '14 at 12:25