2012-10-02 65 views
1

Javascript Noob主動要求值班!需要參數的Javascript結構函數

我想寫出下列代碼:這意味着我需要創建一個將創建一個位置排序的一個Javascript結構,然後還可以採取爲第二位置

var p1 = new LatLon(userLat, userLon);              
var p2 = new LatLon(destLat, destLon); 
var dist = p1.distanceTo(p2);  

論據。我不需要代碼來計算距離。我只需要弄清楚如何創建對象並允許它接受參數。這裏是我的僞代碼/失敗的嘗試:

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

上獲得類似上述,但實用的東西任何幫助嗎?

回答

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語句對象的引用;它會返回新的對象。

裏面distanceTothis將是調用該方法,所以在你的代碼,這將是對p1對象的引用對象的引用。

當然p2將作爲參數傳遞。

var p1 = new LatLon(userLat, userLon); 
var p2 = new LatLon(destLat, destLon); 
var dist = p1.distanceTo(p2); 
0

嘗試:

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

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

相關問題