Javascript:Object在使用原型时没有方法
为什么我必须调用new Chart()从同一个类(比如说)触发一个方法?这是正确的方法吗?谢谢Javascript:Object在使用原型时没有方法,javascript,function-prototypes,Javascript,Function Prototypes,为什么我必须调用new Chart()从同一个类(比如说)触发一个方法?这是正确的方法吗?谢谢 function Chart(location, startDateString, endDateString) { this.location = location; this.startDateString = startDateString; this.endDateString = endDateString; } Chart.prototype.fnDr
function Chart(location, startDateString, endDateString) {
this.location = location;
this.startDateString = startDateString;
this.endDateString = endDateString;
}
Chart.prototype.fnDrawStaticChart = function(chartUrl, chartData) {
$.get(chartUrl, function() {
$('#'+chartData.wrapSpecId).attr('src', chartUrl);
});
}
Chart.prototype.fnDraw = function(fnStaticChartJSON, fnStaticChartImage) {
$.getJSON(fnStaticChartJSON, function(data) {
if (data.chartData.length > 0) {
$('#chartDiv').append($('#template').jqote(data, '@'));
$.each(data.chartData, function(index, chartData) {
var pkgLineId = chartData.wrapSpec2.pkgLineId.pkgLineId;
var wrapSpecId = chartData.wrapSpecId;
var startDate = data.startDate;
var endDate = data.endDate;
var chartUrl = fnStaticChartImage({
pkg_line_id: pkgLineId,
wrap_spec_id: wrapSpecId,
start_date: startDate,
end_date: endDate
});
this.fnDrawStaticChart(chartUrl, chartData); //can't do this.
new Chart().fnDrawStaticChart(chartUrl, chartData); CAN do this.
});
});
}
这是一个简单的范围界定问题此指向传递给$each的函数。必须将此引用的旧值存储在另一个变量中:
Chart.prototype.fnDraw = function(fnStaticChartJSON, fnStaticChartImage) {
var self = this;
$.getJSON(fnStaticChartJSON, function(data) {
if (data.chartData.length > 0) {
$('#chartDiv').append($('#template').jqote(data, '@'));
$.each(data.chartData, function(index, chartData) {
var pkgLineId = chartData.wrapSpec2.pkgLineId.pkgLineId;
var wrapSpecId = chartData.wrapSpecId;
var startDate = data.startDate;
var endDate = data.endDate;
var chartUrl = fnStaticChartImage({
pkg_line_id: pkgLineId,
wrap_spec_id: wrapSpecId,
start_date: startDate,
end_date: endDate
});
self.fnDrawStaticChart(chartUrl, chartData);
new Chart().fnDrawStaticChart(chartUrl, chartData);
});
});
}
好的,很酷。那么为什么我不能这样称呼它。fnDrawStaticChart()?“this”指的是$.getJSON中的某些内容吗?不,这总是指您所处函数的当前范围,在您的情况下指的是传递给$.each()的函数(索引、图表数据)。