Я новый прототип языков на основе и прочитал этот вопрос:Javascript прототип связывают
Preserving a reference to "this" in JavaScript prototype functions
Я задаюсь вопросом, какое значение там, использования подписи на основе прототипа для прикрепления методов к объекту , Почему бы просто не приложить метод к свойству объекта в определении объекта?
Во-вторых, при использовании сигнатуры прототипа для определения методов для объекта, почему «этот» указатель разрешает объект окна внутри функции? Это, по-видимому, недостаток дизайна. Если это не может кто-то объяснить, или указать мне на объяснение, почему нет?
спасибо.
Edit:
Этот код выполняет, как и ожидалось, что делает окно сообщения со словом «здесь» внутри.
function Obj()
{
this.theVar = 'here';
this.method2 = function(){ alert(this.theVar); }
}
Obj.prototype.method3 = function(){ this.method2(); }
Obj.prototype.method4 = function(){ this.method3(); }
var obj = new Obj();
obj.method4();
Этот код является моим обратным вызовом AJAX, а указатель «this» ссылается на объект «window» во время выполнения.
Test.prototype.nextCallback = function(response)
{
if(response.Status != 'SUCCESS')
show_message(response.Message, false);
else
this.setQuestion(response.Question);
}
Test.prototype.setQuestion = function(question){ ... }
«это» указатель на самом деле работает должным образом перед вызовом AJAX, но не после. Это результат, потому что контекст nextCallback() восстанавливается неправильно после вызова AJAX и до вызова обратного вызова? Есть ли способ исправить это?
Я не думаю, что вы имеете в виду «прототипную подпись» - вы говорите о собственности прототипа, не так ли? – Skilldrick
Под «сигнатурой прототипа» я имею в виду определение такого метода: myObj.prototype.myFunction = function() {...} –