Javascript中的Constructer不返回原型函数传递的正确值

时间:2016-04-22 08:10:16

标签: javascript

我用constructer Vector编写了一个代码(它有两个参数),我希望通过原型函数传递不同的参数集,并希望总结两组参数的值。

但是我遇到了打印最终Vector的问题。

function Vector(x, y) {

    this.x = x;

    this.y = y;

    console.log(x, y);//initially this prints (3,3)

    return (x, y);
}



Vector.prototype.plus = function (a, b) {

    this.x = this.x + a;
    this.y = this.y + b;
    console.log(this.x, this.y);// After passing (1,9) it prints (4,12)but      
     return (this.x, this.y);   //after returning (this.x, this.y) it   
                                //prints only Y coordinate as 12
}

var type_vector = new Vector(3, 3);

console.log(type_vector.plus(1, 9));

输出:(3,3),(4,12),12

2 个答案:

答案 0 :(得分:2)

我相信你来自python背景,因为那里(x,y)作为元组返回。在JS中,如果你返回(x,y);它将是右括号中的值(在本例中为y)。您必须使用对象或数组作为目标。

在控制台上试试这个:

var a = (3, 4, 5, 6);
console.log(a);

答案 1 :(得分:0)

好吧,在JavaScript中如果要返回数组,可以使用[]表示法。

不同这与你的版本:

function Vector(x, y) {
  this.x = x;
  this.y = y;
  console.log(x, y);
  return this;
}
Vector.prototype.plus = function(a, b) {
  this.x = this.x + a;
  this.y = this.y + b;
  console.log(this.x, this.y);
  return [this.x, this.y];
};
var type_vector = new Vector(3, 3);
console.log(type_vector.plus(1, 9));