Javascript Noob要求值班!
我想编写以下代码:
var p1 = new LatLon(userLat, userLon);
var p2 = new LatLon(destLat, destLon);
var dist = p1.distanceTo(p2);
这意味着我需要创建一个Javascript结构,它将创建一个位置,然后也可以将第二个位置作为参数。我 不需要代码来计算距离 。我只需要弄清楚如何创建对象并允许它接受参数。这是我的伪代码/失败尝试:
function LatLon(userLat, userLon) {
var pos = {
'lat': userLat, 'lon': userLon, 'distanceTo': distanceBetweenTwoPos(pos, pos2);
}
return pos;
}
function distanceBetweenTwoPos(pos, pos2){
// here I will do my own calculations.
}
获得类似上述内容的任何帮助,但功能正常吗?
答案 0 :(得分:2)
使用典型的原型继承方法,它可能看起来像这样。
function LatLon(userLat, userLon) {
this.lat = userLat;
this.lon = userLon;
}
LatLon.prototype.distanceTo = function(pos2){
console.log(this.lat, pos2.lat);
console.log(this.lon, pos2.lon);
// return the result
}
在LatLon
构造函数中,因为您使用new
调用它,this
是对正在构造的对象的引用,需要return
语句;它会返回新对象。
在distanceTo
内,this
将是对调用该方法的对象的引用,因此在您的代码中,它将是对p1
对象的引用。
当然p2
将作为参数传递。
var p1 = new LatLon(userLat, userLon);
var p2 = new LatLon(destLat, destLon);
var dist = p1.distanceTo(p2);
答案 1 :(得分:2)
function LatLon(userLat, userLon) {
this.pos = {
'lat': userLat,
'lon': userLon
}
}
LatLon.prototype.distanceTo = function(pos2){
return this.pos.lat + pos2.pos.lat;
}
var p1 = new LatLon(1, 2);
var p2 = new LatLon(3, 4);
var dist = p1.distanceTo(p2);
alert(dist);
答案 2 :(得分:0)
尝试:
function LatLon(userLat, userLon) {
this.lat=userLat;
this.lon=userLon;
this.distanceTo=function(to){ return distanceBetweenTwoPos(this, to);}
}