在JavaScript中将参数传递给类函数

在JavaScript中将参数传递给类函数,javascript,class,javascript-objects,Javascript,Class,Javascript Objects,这是一个奇怪的问题-我在Chrome中调试一些JavaScript代码,我发现当我将参数传递给类函数时,它们实际上没有被传递? 奇怪的是,有时候这段代码可以工作,有时候却不行 以下是我得到的(我已经对代码进行了一些删减,删除了我认为不必要的内容) ChartBuilder类中还有大量其他函数,但在任何时候都不会调用/使用 我的问题是,当我调用BuildBubbleLineChart函数并将值传递给它时,它显然会到达该函数,并且没有值,因此它会记录错误error:(BuildBubbleLineC

这是一个奇怪的问题-我在Chrome中调试一些JavaScript代码,我发现当我将参数传递给类函数时,它们实际上没有被传递? 奇怪的是,有时候这段代码可以工作,有时候却不行

以下是我得到的(我已经对代码进行了一些删减,删除了我认为不必要的内容)

ChartBuilder类中还有大量其他函数,但在任何时候都不会调用/使用

我的问题是,当我调用
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
  } = {}){
}