在JavaScript中将参数传递给类函数
这是一个奇怪的问题-我在Chrome中调试一些JavaScript代码,我发现当我将参数传递给类函数时,它们实际上没有被传递? 奇怪的是,有时候这段代码可以工作,有时候却不行 以下是我得到的(我已经对代码进行了一些删减,删除了我认为不必要的内容) ChartBuilder类中还有大量其他函数,但在任何时候都不会调用/使用 我的问题是,当我调用在JavaScript中将参数传递给类函数,javascript,class,javascript-objects,Javascript,Class,Javascript Objects,这是一个奇怪的问题-我在Chrome中调试一些JavaScript代码,我发现当我将参数传递给类函数时,它们实际上没有被传递? 奇怪的是,有时候这段代码可以工作,有时候却不行 以下是我得到的(我已经对代码进行了一些删减,删除了我认为不必要的内容) ChartBuilder类中还有大量其他函数,但在任何时候都不会调用/使用 我的问题是,当我调用BuildBubbleLineChart函数并将值传递给它时,它显然会到达该函数,并且没有值,因此它会记录错误error:(BuildBubbleLineC
BuildBubbleLineChart
函数并将值传递给它时,它显然会到达该函数,并且没有值,因此它会记录错误error:(BuildBubbleLineChart)找不到画布并返回
非常感谢您的帮助 仔细查看参数:
thisBuilder.BuildBubbleLineChart = function({
canvasID,
labels,
data,
noDataMessage = "No data",
symbols = null
} = {}){
这些是,因此函数希望传递这样的对象:{canvasID:
..”,标签:[
..],数据:
..”,节点消息:
..”,符号:[
..]
。它不希望将多个参数作为单个值传递
如果未传递任何参数,则使用具有给定默认值的空对象{}
。由于字符串“CVacatedDistribution”
没有属性canvasID
,标签
,数据
,节点消息
或符号
,所有这些都将成为它们的默认值或未定义的
,要么是您在thisBuilder.BuildBubbleLineChart
中错误地使用了括号,因此您必须修复它们,要么是您错误地调用它,因为您无法像前面的注释中提到的那样传递参数。是你写的这个函数吗?我写的是调用,但不是ChartBuilder中的函数。但这是一件奇怪的事情——如果它需要一个对象而不是参数,为什么它有时会工作呢?在JavaScript中,事情不只是“有时”工作。他们要么工作,要么不工作。你能举一个例子说明一切都按预期工作吗?你是对的,它一直工作,直到有人更新了ChartBuilder函数而没有告诉任何人>:(结果是有人修改了ChartBuilder类并提交了它而没有告诉我,这破坏了我的图表。非常感谢你!
function ChartBuilder(palette, mainColor) {
var thisBuilder = {};
var charts = [];
//Builds a horizontal chart of circles separated by lines with labels
thisBuilder.BuildBubbleLineChart = function ({
canvasID,
labels,
data,
noDataMessage = 'No data',
symbols = null } = {}) {
var canvas = document.getElementById(canvasID);
if (canvas == undefined) {
console.log('Error: (BuildBubbleLineChart) Your canvas could not be found');
return;
}
thisBuilder.ClearChart(canvasID);
var ctx = canvas.getContext('2d');
var canvasWidth = canvas.width;
var canvasHeight = canvas.height;
if (NoData(data)) {
canvas.width = 200;
FillNoDataText(ctx, noDataMessage, 100, canvasHeight / 2);
PushCustomChart(canvasID);
return;
}
//etc - goes on to build the chart
}
thisBuilder.BuildBubbleLineChart = function({
canvasID,
labels,
data,
noDataMessage = "No data",
symbols = null
} = {}){
}