我已经学习了几天的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));
答案 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
构造函数应该只有两个参数x
和y
。并且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));