2

JSが初めてです..これを以下の関数で使用するのが適切かどうか教えてください:

var Vector = (function()...

this.prototype.add = function(someVector2){

    var tmpVect = this;
    tmpVector.x += someVector2.x;
    tmpVector.y += someVector2.y;
    return tmpVect;
};

「var tmpVect = this」は、関数を呼び出したベクトルの x & y 属性を持つローカル ベクトル変数になるという意味で?

乾杯

4

3 に答える 3

1

私はこれを次のように書き直します:(あなたのコメントに基づいて)

var Vector = function(){

}

Vector.prototype.add = function(someVector2){
    var tmpVector = new Vector;
    tmpVector.x =  this.x + someVector2.x;
    tmpVector.y = this.y + someVector2.y;

    return tmpVector;
}

次に、次のように呼び出すことができます。

var someVector = new Vector();
var addedVector = someVector.add(someVector);

上記は、の 2 倍のand値addedVectorを持つ新しい Vector を格納します。xysomeVector

于 2013-10-24T20:59:44.177 に答える
1

新しいオブジェクトは、非常に明示的な方法でのみ宣言されます。「new Vector()」、または「変数 = {x:5, y:2}」など。「something = somethingElse」と記述するたびに、新しいオブジェクトは作成されません。これは、トリプル イコールコンパレータを使用して確認することもできます。

v1 = new Vector(1, 2);
v2 = new Vector(1, 2);
v1 === v2 // will return false

v3 = v1;
v1 === v3 // will return true

v1.x = 17;
v3.x // will return 17

new Vector()開発を容易にするために、オリジナルと同じ x と y を持つ" " を作成して返す Vector プロトタイプ関数 "clone" を定義することができます。の返品用に新しいものadd()が必要な場合は、そのようなことを行う必要があります。

また、ライアンの答えは接線方向に正しいです-ベクターが作成されるたびにではなく、プロトタイプ関数を1回だけ定義する必要があります。

于 2013-10-24T21:01:48.910 に答える