2016-01-06 19 views
1

我聲明瞭兩種方法。無法在Number上調用聲明的原型,而String在JavaScript中工作

String.prototype.hazaa = function (shazoo) { 
    return this + shazoo; 
} 

Number.prototype.hazaa = function (shazoo) { 
    return this + shazoo; 
} 

當我打電話給前者時,我得到了預期的行爲。但是,調用第二個函數會產生下面的錯誤。我有感覺,這是我的C# - 令人驚訝的(我正在考慮擴展方法和麪向對象的調用)的感覺。調用的執行如下。

"abc".hazaa("shazoo"); 
12345.hazaa(00000000); 

是否有另一種語法來調用我添加的函數?我沒有以正確的方式宣佈原型加法?

是的,我做了the research但我可能會錯過一個相關點。

+2

,如果你想訪問數量的屬性文字是一個整數...'12345..hazaa (000000)'......雙贏的勝利......這是一個勇敢的人,用「研究」這個詞鏈接到w3schools ......第二次我在SO上做到這是最後一個 - 人們非常沮喪: # –

+0

@JaromandaX Hehehe。我意識到我的諷刺並沒有表現出來。也許我應該改爲「*在研究智慧的最終來源方面表現出色*」,hihi。 –

+0

_「我可能會錯過一個相關的點」_事實證明這是_decimal_點:) –

回答

3

問題是在解析12345.hazaa(00000000);時,它看到hazaa在數字中的小數點後面,因此是意外的標記。如果你在小括號括起數,它被解析並正確執行:

(12345).hazaa(00000000); 

這將繼續變量正常工作,因爲分析已經發生了:

var a = 123; 
a.hazaa(0000); 

正如提到的Jaromanda X的意見,另一種選擇,讓正確的解析是使用雙點語法:

12345..hazaa(00000000); 
在JavaScript
+3

或我說的12345..hazaa(00000000);'...我會讓你在你的答案中用它作爲一個性感的選擇 - 它可以節省**整個**字節:p –

+1

@JaromandaX噢,以前沒有見過。我不確定我更喜歡哪一個! –

+0

@JaromandaX我得到了語法(當然,我的無知是錯誤的根源)。我迫不及待地向我的團隊展示語法。他們肯定會糾正它!圓括號看起來是多餘的,雙點看起來像是一個打字錯誤。我現在很高興。 LOS ... –

相關問題