-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) の 1 つを使用する方法を学ぶことです。

これにより、エラーが発生したときに表示されます。また、document.write() の代わりに console.log() を使用することもできます。これにより、メッセージをページに書き込まずに自分自身に送信できます。

于 2012-10-21T18:16:13.737 に答える