Javascript:Object在使用原型时没有方法

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

为什么我必须调用new Chart()从同一个类(比如说)触发一个方法?这是正确的方法吗?谢谢

  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()的函数(索引、图表数据)。