-1

我在 JavaScript 中有一些代码可以存储一些浮点数,但我似乎无法让它打印出正确的数据,这是我的代码片段,这是我遇到的问题。

function Vector3(x,y,z){
    this.x = x; this.y = y; this.z = z;
}

function Edge(vec1, vec2){
    var vector1 = new Vector3(vec1.x,vec1.y,vec1.z);
    document.write(vector1.x+ "," +vector1.y +"," + vector1.z+"<br>");
var vector2 = new Vector3(vec2.x,vec2.y,vec2.z);
}

var sqrVer = new Array();
sqrVer[1] = new Vector3(-1.0,    1.0,    1.0);
sqrVer[2] = new Vector3( 1.0,    1.0,    1.0);
sqrVer[3] = new Vector3(-1.0,   -1.0,    1.0);
sqrVer[4] = new Vector3( 1.0,   -1.0,    1.0);
sqrVer[5] = new Vector3( 1.0,   -1.0,   -1.0);
sqrVer[6] = new Vector3( 1.0,    1.0,   -1.0);
sqrVer[7] = new Vector3(-1.0,    1.0,   -1.0);
sqrVer[8] = new Vector3(-1.0,   -1.0,   -1.0);

var sqrEdge = new Array();
sqrEdge[1] = new Edge(sqrVer[1], sqrVer[2]);


document.write(sqrVer[1].x + "<br>");
document.write(sqrEdge[1].vector1.x + "<br>");

现在打印出来的是这个

-1.0, 1.0, 1.0,
-1.0

但是对于到 sqrEdge 并尝试打印出 x 的行,没有任何内容写入屏幕???为什么是这样?

4

1 回答 1

0

您的 Edge 函数实际上并没有创建和返回任何内容。这会导致您的程序在打印之前崩溃,因为它返回一个空对象(由于“new”),{}.vector1 = undefined 并且 {}.vector1.x 会引发错误。

要解决此问题,请尝试:

function Edge(vec1, vec2){
    this.vector1 = new Vector3(vec1.x,vec1.y,vec1.z);
    this.vector2 = new Vector3(vec2.x,vec2.y,vec2.z);
}

我的建议是学习如何使用其中一个 javascript 控制台(chrome 或 safari 中的“开发人员工具”,或 firefox 中的 firebug)。

这将在您遇到错误时向您显示,您还可以使用 console.log() 而不是 document.write() 这将让您自己发送消息而无需将它们写入页面。

于 2012-10-21T18:16:13.737 回答