gpt4 book ai didi

javascript - 如何在 Javascript 中从另一个成员函数调用一个成员函数

转载 作者:数据小太阳 更新时间:2023-10-29 05:11:08 26 4
gpt4 key购买 nike

假设我有这样的代码

function Chart(start, end, controller, method, chart)
{
console.log('Chart constructor called');
this.start = start;
this.end = end;
this.controller = controller;
this.method = method;
this.chart = chart;
this.options = {};
}

Chart.prototype.update = function()
{
console.log('update ' + new Date().getTime());
$.getJSON('index.php', {
controller: this.controller,
method: this.method,
START: this.start,
END: this.end },
function(json) { this.draw(json); }); //<-- Problem right here!
}

Chart.prototype.draw = function(json)
{
//lots of code here
}

我收到错误 Uncaught TypeError: Object #<an Object> has no method 'draw' .现在,我是第一个承认我是 Javascript 新手的人。我应该以另一种方式调用成员函数吗?还是我应该做一些完全不同的事情?

编辑:这是我创建对象的方式:

chartObj = new Chart(start, end, 'OBF.RootCauses', 'ajaxRootCauses', chart);

最佳答案

这里的问题是 this 被改变了,因为你正在定义一个新函数 - 所以 this 指的是你所在的函数。

还有其他方法可以解决这个问题,但最简单的方法是将 this 保存到一个变量并调用该变量上的函数,如下所示:

Chart.prototype.update = function()
{
console.log('update ' + new Date().getTime());
var self = this;
$.getJSON('index.php', {
controller: this.controller,
method: this.method,
START: this.start,
END: this.end },
function(json) { self.draw(json); });
}

有关解决同一问题的不同方法,请参阅 Chris 的回答。

关于javascript - 如何在 Javascript 中从另一个成员函数调用一个成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5004829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com