1

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. 
}

对获得与上述类似但功能有用的东西有什么帮助吗?

4

3 回答 3

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构造函数内部,因为您使用 , 调用它newthis所以是对正在构造的对象的引用,return因此需要声明;它将返回新对象。

内部distanceTo,this将是对调用该方法的对象的引用,因此在您的代码中,它将是对该p1对象的引用。

当然p2会作为参数传递。

var p1 = new LatLon(userLat, userLon);
var p2 = new LatLon(destLat, destLon);  
var dist = p1.distanceTo(p2); 
于 2012-10-02T11:09:21.823 回答
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);

演示:http: //jsfiddle.net/6NGhY/

于 2012-10-02T11:19:10.273 回答
0

尝试:

function LatLon(userLat, userLon) {
    this.lat=userLat;
    this.lon=userLon;
    this.distanceTo=function(to){ return distanceBetweenTwoPos(this, to);}   

}
于 2012-10-02T11:09:07.907 回答