javascript函数两点之间的距离

时间:2017-03-13 02:06:19

标签: javascript function

我已经学习了几天的javascript。我遇到了sintaxis和我的程序的语义问题,我可以运行这个简单的问题。我不知道它有什么问题

//2. **Distance between two points**. Create a 
//function that calculate the distance between two points 
//(every point have two coordinates: x, y). _HINT: Your function 
//Should receive four parameters_.


    function Point(x,y,x1,y1){
    this.x = x;
    this.y = y;
    this.x1 = x1;
    this.y1 = y1;

    this.distanceTo = function (point)
    {
        var distance = Math.sqrt((Math.pow(this.x1-this.x,2))+(Math.pow(this.y1-this.y,2)))
        return distance;
    };
}

var newPoint = new Point (10,100);
var nextPoint = new Point (25,5);


console.log(newPoint.distanceTo(nextPoint));

5 个答案:

答案 0 :(得分:3)

试试这个:

    function Point(x,y){
    this.x = x;
    this.y = y;
    

    this.distanceTo = function (point)
    {
        var distance = Math.sqrt((Math.pow(point.x-this.x,2))+(Math.pow(point.y-this.y,2)))
        return distance;
    };
}

var newPoint = new Point (10,100);
var nextPoint = new Point (20,25);

console.log(newPoint.distanceTo(nextPoint))

在您的distanceTo函数中,您需要引用point.x和point.y,因为它们是nextPoint的点。

希望这有助于:3

答案 1 :(得分:0)

您在错误的地方应用提示。这是应该采用四个参数的distanceTo函数。 鉴于提示,我不会为Point构造函数而烦恼(尽管我一般都喜欢这种想法,但它似乎并不是这个问题所寻求的。只是和distanceTo(x,y,x1,y1)一起去,我不认为你有任何麻烦。

答案 2 :(得分:0)

Point构造函数应该只有两个参数xy。并且distanceTo应该使用x y this点{另一个点(作为参数传递的那个)。



function Point(x, y){ // only x and y
    this.x = x;
    this.y = y;

    this.distanceTo = function (point)
    {
        var dx = this.x - point.x;               // delta x
        var dy = this.y - point.y;               // delta y
        var dist = Math.sqrt(dx * dx + dy * dy); // distance
        return dist;
    };
}

var newPoint = new Point (10,100);
var nextPoint = new Point (25,5);


console.log(newPoint.distanceTo(nextPoint));




注意:由于所有Point个实例都具有完全相同的distanceTo函数,因此最好在原型上定义它,而不是为每个实例重新定义它增加创作时间,浪费大量资源。

这样更好:



function Point(x, y){ // only x and y
    this.x = x;
    this.y = y;
}

Point.prototype.distanceTo = function (point)
{
    var dx = this.x - point.x;               // delta x
    var dy = this.y - point.y;               // delta y
    var dist = Math.sqrt(dx * dx + dy * dy); // distance
    return dist;
};

var newPoint = new Point (10,100);
var nextPoint = new Point (25,5);


console.log(newPoint.distanceTo(nextPoint));




有关prototpes的更多信息here

答案 3 :(得分:0)

根据您的代码,有几种不同的方法可以做到这一点,但由于您的功能需要4个输入,所以我选择了这个。

 function Point(x,y,x1,y1){
        this.x = x;
        this.y = y;
        this.x1 = x1;
        this.y1 = y1;
        this.distanceTo = function() {
            return Math.sqrt((Math.pow(this.x1-this.x,2))+(Math.pow(this.y1-this.y,2)))
        };
}

var points = new Point (10,100,25,5);
console.log(points.distanceTo()

);

您也不需要设置变量然后将其返回,您只需返回等式即可。

答案 4 :(得分:0)

您的函数function Point(x,y,x1,y1)有四个参数,但您只用其中两个参数声明它。 在distanceTo函数中,您应该与point调用函数的参数相关联。

它应该是这样的; point.x为您提供传递对象的'X'值。

@Edit:我对这个“问题”的解决方案是;

var Point = function (x,y) {
  this.x = x;
  this.y = y;

  this.distanceTo = function (point) {
    let calculations = Math.sqrt((Math.pow(point.x-this.x,2))+(Math.pow(point.y-this.y,2)));

    return calculations;
  }
}

var firstPoint = new Point(0,0);
var secPoint = new Point(2,2);

console.log(firstPoint.distanceTo(secPoint));