我知道有幾種模式可以使JavaScript成爲類似的類。
我想採取'延伸原型'的方式...簡單地說,它看起來更整齊。
在下面的例子中,我有一個類(基本上是功能)MetricsChart,我有幾個公共方法和一個私有方法(基本上是一種可重用的方法)
這裏從公共方法(drawOrAdd)我無法訪問私有方法(_convertArrayToTable),我該怎麼做?使javascript私有方法可以訪問它的公共方法
function MetricsChart(containerId, chartType) {
this._container = document.getElementById(containerId);
this._chartType = chartType;
this._isChartDrawn = false;
this._chartData = null;
var _convertArrayToTable = function (data) {
return google.visualization.arrayToDataTable(data);
}
}
MetricsChart.prototype.drawOrAdd = function(data)
{
if (!this.isChartDrawn()) {
var chart = new google.visualization.LineChart(this._container);
if (chart) {
var table = _convertArrayToTable(data);
console.log(table);
this._isChartDrawn = true;
}
}
}
MetricsChart.prototype.isChartDrawn = function() {
return this._isChartDrawn;
}
MetricsChart.prototype.getChartData = function() {
}
一種方式我無意中發現是封閉MetricsChart類本身內部的公共方法...
它爲我:),我可以在外面訪問的公共方法和公有方法可以訪問私有方法(達到目的)。 以下代碼... 這是對的嗎?我在做什麼工作?
function MetricsChart(containerId, chartType) {
this._container = document.getElementById(containerId);
this._chartType = chartType;
this._isChartDrawn = false;
this._chartData = null;
var _convertArrayToTable = function (data) {
return google.visualization.arrayToDataTable(data);
}
MetricsChart.prototype.drawOrAdd = function (data) {
if (!this.isChartDrawn()) {
var chart = new google.visualization.LineChart(this._container);
if (chart) {
var table = _convertArrayToTable(data);
console.log(table);
this._isChartDrawn = true;
}
}
}
MetricsChart.prototype.isChartDrawn = function() {
return this._isChartDrawn;
}
MetricsChart.prototype.getChartData = function() {
}
}
@零,感謝非常詳細的解釋,我知道我的方法有問題,你解釋了這個問題,我明白更好。要試試你給 – SridharVenkat
的解決方案,謝謝你.. – SridharVenkat