转换为对象的数字

numbers converted to objects

本文关键字:数字 对象 转换      更新时间:2023-09-26

我在使用一些JavaScript时遇到了麻烦,其中一些明显的数字值突然变成了对象,我不知道如何或为什么。

代码片段:

addFigure("-1,1,-0.5_1,1,-0.5_0.5,-1,-0.5_-0.5,-1,-0.5");
function addFigure(t) {
        var fig = new figure();
        var v = t.split("_");
        var points = new Array();
        for (var i = 0; i < v.length; i++) {
            var coords = v[i].split(",");
            var x = parseFloat(coords[0]);
            var y = parseFloat(coords[1]);
            var z = parseFloat(coords[2]);
            alert(typeof x + " " +typeof y)
            var point = new Point3D(x, y, z);
            alert(typeof point.x + " " + typeof point.y)
           //both alerts print out "number number"
           fig.addPoint(point);
        }

        figures.push(fig);
    }
        function figure() {
        this.points = new Array();
        this.addPoint = function (x, y, z) {
            var v = new Point3D(x, y, z);
            alert(typeof x + " " + typeof y)
//this alert prints out "Object undefined"
            this.points.push(v)
        }
        this.getPoints = function () { return this.points }
    }

您在此处使用一个参数(Point3D)调用addPoint函数:

fig.addPoint(point);

addPoint似乎期望将这一点视为三个单独的参数:

this.addPoint = function (x, y, z) {

所以你最终会得到x是你传入的Point3D,而yzundefined

您的addPoint()方法似乎期望分别传递xyz属性,但您只传递了一个参数,即point对象。

将方法更改为:

this.addPoint(point) {
    /* x, y and z are now retrievable from point.x, point.y etc */
}

或者将调用更改为

fig.addPoint(point.x, point.y, point.z);