Use Of This Javascript
Solution 1:
I would rewrite this like so:(based on your comments)
varVector = function(){
}
Vector.prototype.add = function(someVector2){
var tmpVector = newVector;
tmpVector.x = this.x + someVector2.x;
tmpVector.y = this.y + someVector2.y;
return tmpVector;
}
Then you could invoke it like so:
var someVector = new Vector();
var addedVector = someVector.add(someVector);
The above would store a new Vector in addedVector
that would have an x
and y
value double that of someVector
.
Solution 2:
New objects are only declared in very explicit ways; "new Vector()", or "variable = {x:5, y:2}", etc. Whenever you write "something = somethingElse", no new objects are going to be created. You can even confirm this using the triple-equals comparator.
v1 =new Vector(1, 2);
v2 =new Vector(1, 2);
v1 === v2 // will returnfalse
v3 = v1;
v1 === v3 // will returntrue
v1.x =17;
v3.x // will return17
For ease of development, you might define a Vector prototype function "clone", that creates and returns a "new Vector()
" with the same x and y as the original. If you want a new one for add()
's return, you'll need to do something like that.
Also: ryan's answer is tangentially correct - you should only define prototype functions once, not every time a Vector is created.
Solution 3:
Below is how I would write it. It also has a trick I read about from David Herman for making your constructors new
agnostic. This means you don't necessarily have to make a new Vector
with the new
keyword.
function Vector(x,y) {
// Make the constructor `new` agnosticif (!(this instanceof Vector)) {
return new Vector(x,y);
}
this.x = x;
this.y = y;
returnthis;
}
Vector.prototype.add = function(someVector2) {
this.x += someVector2.x;
this.y += someVector2.y;
returnthis;
};
// Examplevar myVector = new Vector(1,2);
var myOtherVector = Vector(1,2);
myVector.add(myOtherVector);
Post a Comment for "Use Of This Javascript"