如何在类外的另一个函数中使用类的方法?

珠子

我想在其他函数的内部外部使用该类Coordinates的方法compX如何执行此操作却出现了错误compYclassReferenceError: xy is not defined

我尝试在其他函数中制作对象,drawGraph()但仍然给出错误。

<script>
var c =document.getElementById("myCanvas"); 
var ctx = c.getContext("2d");
//function call
drawGraph(ctx,-10,10);
drawAxis(ctx,10);

function f(x){
        return x*x;
}

class Coordinates {
    Coordinates(){}
    compX(x){
        originX = myCanvas.width/2;
        mag = 20;
        return(originX + mag*x);
    }
    compY(y){
        originY = myCanvas.height/2;
        mag = 20;
        return(originY - mag*y);
    }
}

xy = new Coordinates();
function drawGraph(ctx, a, b){
//make lines that trace coordinates of the function in an interval
    var n = 50;
    var dx  = (b-a)/n;
    for(x=a; x<=b; x+=dx){
    var pointAx=x;
    var pointAy=f(x);
    var pointBx=x+dx;
    var pointBy=f(x+dx);
    console.log(`[${pointAx}, ${pointAy}],[${pointBx}, ${pointBy}]`)


    ctx.moveTo(xy.compX(pointAx), xy.compY(pointAy)); //this is where the error occurs
    ctx.lineTo(xy.compX(pointBx), xy.compY(pointBy));
    ctx.stroke();
    ctx.strokeStyle = "#0000ff"
    ctx.lineWidth = 1;
    } 
}

function drawAxis(ctx, axisLength){
    ctx.strokeStyle = "#000000";
    ctx.moveTo(xy.compX(0), xy.compY(axisLength));
    ctx.lineTo(xy.compX(0), xy.compY(-axisLength));
    ctx.moveTo(xy.compX(axisLength), xy.compY(0));
    ctx.lineTo(xy.compX(-axisLength), xy.compY(0));
    ctx.stroke();
    ctx.lineWidth = 1;
}

</script>

我收到ReferenceError: xy is not defined我希望绘制图表的错误,但未显示任何内容,请告诉我如何使代码更好(整洁)

德拉戈斯·斯特鲁加

这里有些错误,下面是代码的更好版本:

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");

class Coordinates {
    compX(x) {
        var originX = myCanvas.width / 2;
        var mag = 20;
        return originX + mag * x;
    }
    compY(y) {
        var originY = myCanvas.height / 2;
        var mag = 20;
        return originY - mag * y;
    }
}

var xy = new Coordinates();

drawGraph(ctx, -10, 10);
drawAxis(ctx, 10);

function f(x) {
    return x * x;
}

function drawGraph(ctx, a, b) {
    //make lines that trace coordinates of the function in an interval
    var n = 50;
    var dx = (b - a) / n;
    for (x = a; x <= b; x += dx) {
        var pointAx = x;
        var pointAy = f(x);
        var pointBx = x + dx;
        var pointBy = f(x + dx);
        console.log(`[${pointAx}, ${pointAy}],[${pointBx}, ${pointBy}]`);

        ctx.moveTo(xy.compX(pointAx), xy.compY(pointAy)); //this is where the error occurs
        ctx.lineTo(xy.compX(pointBx), xy.compY(pointBy));
        ctx.stroke();
        ctx.strokeStyle = "#0000ff";
        ctx.lineWidth = 1;
    }
}

function drawAxis(ctx, axisLength) {
    ctx.strokeStyle = "#000000";
    ctx.moveTo(xy.compX(0), xy.compY(axisLength));
    ctx.lineTo(xy.compX(0), xy.compY(-axisLength));
    ctx.moveTo(xy.compX(axisLength), xy.compY(0));
    ctx.lineTo(xy.compX(-axisLength), xy.compY(0));
    ctx.stroke();
    ctx.lineWidth = 1;
}

首先,var/let/const在变量赋值之前习惯于写作那是造成您所犯的一些错误的原因。第二,正如评论中提到的几个人所述,由于分配了之前drawGraph()调用的函数,因此出现了错误定义上可以解决您的问题xyxyxyxy unassigned

然后,不要像以前那样使用空的构造函数。如果构造函数中包含某些内容,请将其定义为constructor()而不是className()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python如何在另一个类方法中使用一个类

如何在另一个类中使用类函数?

如何在另一个 Python 类构造函数中使用 __enter__ 方法实例化 Python 类

如何在另一个类构造函数中使用一个类的成员

如何在“ pytest”中使用另一个文件中的函数和类?

如何在react native中使用另一个类的参数调用函数?

ByteBuddy:如何在另一个类中使用自定义方法声明一个类

如何在另一个类的方法中使用来自单独类的一个对象?

我如何在另一个类中使用一个类中的方法(是否可能)

如何在另一个类的另一个mixin中使用一个类的mixin-ed方法

如何在python中的不同类中使用另一个类方法值?

如何在另一个记录器类中使用另一个类的变量

在另一个模块中使用类/函数

如何在另一个生成字节码类中使用匿名类实例

如何在Java中的另一个类中使用嵌套类?

如何从另一个类调用方法以在我的ActionListener类中使用

如何在同一包中的另一个类中使用一个类?

在另一个类的构造函数中使用一个类作为参数

在Swift中使用另一个类中的一个类的函数

C ++-如何在另一个类中使用私有构造函数实例化对象

如何在C ++中的另一个模板函数中使用属于模板化类的嵌套类型?

如何在 C++ 中使用具有另一个类对象的构造函数?

Python 2.7:如何在另一个类中使用一个类的对象?

Java:如何在另一个类中使用在一个类中实例化的对象?

如何在 Python 中的另一个类中使用一个类中的变量?

如何在一个类中从另一个调用一个函数(方法)?

PHP OOP:如何在同一个类的另一个方法中使用一个方法?

在另一个类中使用一个类的方法

在另一个类中使用一个类的方法