Мне нужно установить объект ресурсов в методе exportChart модуля экспорта Highcharts, но не могу перезаписать его.
Исходный код модуля экспорта находится по адресу http://code.highcharts.com/modules/exporting.src.js, и конкретный подраздел, который я перезаписываю, выглядит следующим образом:
'use strict';
(function (factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function (Highcharts) {
(function (H) {
// create shortcuts
var Chart = H.Chart,
merge = H.merge,
extend = H.extend;
//... Removed extra code not needed for example
extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
exportChart: function (exportingOptions, chartOptions) {
var svg = this.getSVGForExport(exportingOptions, chartOptions);
// merge the options
exportingOptions = merge(this.options.exporting, exportingOptions);
// do the post
H.post(exportingOptions.url, {
filename: exportingOptions.filename || 'chart',
type: exportingOptions.type,
// IE8 fails to post undefined correctly, so use 0
width: exportingOptions.width || 0,
scale: exportingOptions.scale,
svg: svg
}, exportingOptions.formAttributes);
}
//... Removed extra code not needed for example
});
//... Removed extra code not needed for example
}(Highcharts));
}));
Для проверки возможности перезаписи метода я использую следующий код:
(function (H) {
var Chart = H.Chart,
extend = H.extend;
extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
exportChart: function (exportingOptions, chartOptions) {
alert('changed it');
}
});
}(Highcharts));
Предупреждение никогда не срабатывает, но вместо этого происходит нормальный экспорт.
Я создал JSFiddle, показывая эту проблему здесь: https://jsfiddle.net/j005v79j/
Может кто-нибудь сказать мне, почему перезапись этого метода не работает?