function ExtendFunctionality() {
$.datepicker.constructor.prototype._updateDatepicker = function(inst) {
// когда здесь пишется this, тогда он воспринимается как $.datepicker
ModifyDatePicker(); // OUR CHANGES
}
}
при данном раскладе, this рассматривается как window и идет прямиком в код datepicker'a:
function ExtendFunctionality() {
var oldUpdateDatepicker = $.datepicker.constructor.prototype._updateDatepicker;
$.datepicker.constructor.prototype._updateDatepicker = function(inst) {
oldUpdateDatepicker(inst); // когда начинает выполнятся код отсюда, то this это уже window
ModifyDatePicker(); // OUR CHANGES
}
}
Вот что валяется в _updateDatepicker:
/* Generate the date picker content. */
_updateDatepicker: function(inst) {
var dims = {width: inst.dpDiv.width() + 4,
height: inst.dpDiv.height() + 4};
var self = this;
inst.dpDiv.empty().append(this._generateHTML(inst)) // первое место, где this уже не тот
.find('iframe.ui-datepicker-cover').
css({width: dims.width, height: dims.height})
.end() . . . // и т.д. и т.п.
. . . . . . . .. .. .. . . .. . .
. . . . . .. . .. . . . .. .
}