2010-03-11 23 views
5
100['toString'] //does not fail 
100.toString //fails 

क्यों?100.toString बनाम 100 ['toString']

100.toString 100.toString() के समान नहीं है। तो दूसरे मामले में मुझे फ़ंक्शन वापस लौटने के रूप में क्यों नहीं मिल रहा है?

उत्तर

17

दूसरी पंक्ति विफल हो जाती है क्योंकि इसे "100" के रूप में पार्स किया जाता है, इसके बाद "toString" होता है।

डॉट संकेतन का उपयोग करने के लिए, निम्न में से कोई भी काम करेगा:

(100).toString() 
100.0.toString() 
100..toString() 
var a = 100; 
a.toString() 
:

(100).toString 
100.0.toString 
100..toString 
var a = 100; 
a.toString 

आप कॉलtoString समारोह की कोशिश कर रहे हैं, तो आप भी कोष्ठक में शामिल करने की आवश्यकता होगी

मैं ब्रांड्स का उपयोग करना पसंद करता हूं (या एक चर, अगर मेरे पास पहले से ही एक स्पष्ट रूप से है), क्योंकि विकल्प भ्रमित और अनजान हो सकते हैं।

+0

एक और उदाहरण: '100..toString()' रूप में अच्छी तरह से काम करता है के बाद से पहली अवधि संख्या के भाग के रूप में गिना जाता है, और संपत्ति का उपयोग कर सकते वाक्य रचना के हिस्से के रूप दूसरा। –

+0

ध्यान दें कि '100' और' 100.0' समान नहीं हैं। – Gumbo

+0

@ मैक्स, अच्छा बिंदु। यह बहुत मजेदार दिखता है, लेकिन मैं इसे भी जोड़ दूंगा। –

5

इसके बजाय (100).toString का उपयोग करें।

1

माता-पिता जाने का सबसे अच्छा तरीका है। आपको वही समस्या w/फ़ंक्शन परिभाषाएं भी मिली हैं।

function() {}.call() => fails 
(function() {}).call() => succeeds 
संबंधित मुद्दे