これは JavaScript のベスト プラクティスの質問です。グローバル オブジェクトの汚染を防ぎ、プライベート メソッドとパブリック メソッドを作成できるようにする、すぐに実行される関数があります。
私が立ち往生しているのは..プライベートメソッドの1つ(drawChart
以下)の場合、別のものに変更されるコールバックを処理するthis
方法ですが、モジュール内で別のプライベートメソッドを呼び出すことができます...以下の例は、私が何を意味するかを示しています-addChartSummay
常に正しいで実行されるようにするにはどうすればよいthis
ですか?
var SentDetails = (function () {
var chart;
var addChartSummary = function () {
// In here, I need to access "chart"
chart.something = something;
};
var drawChart = function() {
chart = new Highcharts.Chart({
...
}, function(chart) {
// Because this is in a oncomplete call-back, "this" is now set to window (global)
addChartSummary(); // Will enter method but "this" is wrong so will not work
SentDetails.addChartSummary.call(..); // Won't work because addChartSummary is private..
});
};
return {
loadChart: function() {
... do some work
drawChart();
}
}
}());