Мне нравится, чтобы мой javascript был отделен от файлов классов. Недавно я столкнулся с необходимостью предоставить функцию обратного вызова функции в другом доступе к файлу javascript через точечную нотацию, поскольку эта функция является частью объекта.Запуск функции обратного вызова в исходном поле
Так, например, если у меня есть объект под названием MyObject, и у него есть функция, называемая doSomething, и я хочу иметь обратный вызов для функции doSomething, но я создаю свой экземпляр объекта в другом файле класса и Я передаю свой обратный вызов в файл класса, он запускается в этой области и не входит в область исходного файла.
FirstObject = function(options){
var FirstObject = this;
FirstObject.something = "somevalue";
FirstObject.MyObject = new MyObject();
FirstObject.MyObject.doSomething(param1, function(){//I need to be able to reference FirstObject.something here});
}
Я знаю, что могу сделать это, запуская событие во втором, как: $(document).trigger("doSomething-Finished")
и слушать это в происходящей документе, но я хотел бы иметь более прямой доступ. Я чувствую, что это возможно, поскольку это работает с обратными вызовами jQuery.
Я видел ответ на этот вопрос: scope when doing OO javascript callbacks
, но я действительно не понимаю, что именно он делает в растворе и, как реализовать это для моей конкретной ситуации.
Я не понимаю. Вы просто * можете * ссылаться на 'FirstObject.something' из этой функции? Вы просто не можете использовать 'this'. – Bergi
Пожалуйста, не путайте (переменную) * область * с ['this'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this) * context *! – Bergi