2013-06-19 29 views
0

這裏最重要的是我不能設置變量,需要在飛行中:Javascript方法鏈:正確的方法鏈toFixed()和parseFloat()返回一個數字,而不是一個字符串?

處理緯度。我們稱之爲拉特。假設在這種情況下,經緯度是123.4567

lat.toFixed(2).parseFloat(); 

TypeError: Object 123.35 has no method 'parseFloat' 

最好的方法去呢?

+3

那麼,你需要傳遞'parseFloat',這是一個函數,而不是一個方法,所以...''parseFloat(lat.toFixed(2));'。如果你想能夠使用鏈接,你可以修改'String'的原型,如:'String.prototype.parseFloat = function(){return parseFloat(this); };' - http://jsfiddle.net/L4M2C/ – Ian

+0

是的,你說得對,我完全忽略了它。 'parseFloat(Lat).toFixed(2)' – DnfD

回答

3

toFixedNumber的方法,並返回一個字符串。 window.parseFloat是一個全局函數,而不是String的一個方法,但是如果你確實需要的話,那麼你可以使它成爲String方法,否則就把它用作函數。在這種情況下,您甚至可以使用unary plus運營商。

(有討論關於增強,我不打算進入,你可以做一些研究,並彌補自己的心態本地對象很大。)

的Javascript

if (!String.prototype.parseFloat) { 
    String.prototype.parseFloat = function() { 
     return parseFloat(this); 
    } 
} 

var lat = 123.456789; 

console.log(parseFloat(lat.toFixed(2))); 
console.log(lat.toFixed(2).parseFloat()); 
console.log(+lat.toFixed(2)); 

輸出

123.46 
123.46 
123.46 

jsfiddle

+1

對於更改'String'原型並沒有太多的爭議。現在,'Array'和'Object'是另一回事... – Ian

+0

我同意,但這取決於你旅行的圈子。 – Xotic750

+1

的確,我從來沒有聽到任何反對它的消息。重要的是檢查該方法不存在。像'「」.parseFloat || String.prototype.parseFloat = function(){/ * Stuff * /};' – Ian

相關問題