2012-09-03 11 views
6

अगर मैं कंसोल खोलें और प्रवेश ...क्यों कंसोल दर्ज ऑब्जेक्ट की 'toString` विधि का उपयोग नहीं करता है?

var f=function(a){ 
    this.toString=function(){ 
     return "-->"+a; 
    } 
},i=new f(5); 
i; 

... यह ({toString:(function() {return "-->" + a;})}) देता है।

लेकिन अगर मैं में प्रवेश ...

var f=function(a){ 
    this.toString=function(){ 
     return "-->"+a; 
    } 
},i=new f(5); 
alert(i); 

... यह अलर्ट "-->5"

यह मुझे बहुत ज्यादा फर्क नहीं पड़ता, लेकिन मैं "-->5" वापस जाने के लिए पहले कोड पसंद करेंगे। क्या ऐसा करने का कोई तरीका है, या यह जानबूझकर है कि कंसोल toString का उपयोग नहीं करता है?

+1

मैं एक वस्तु है, और कंसोल तत्वों को दिखाने की कोशिश करता है जैसा वास्तव में वे हैं। अलर्ट ऑब्जेक्ट्स प्रदर्शित नहीं कर सकता है, इसलिए यह टूस्ट्रिंग फ़ंक्शन को कॉल करेगा। अगर वस्तुओं को हमेशा कंसोल पर तारों में परिवर्तित किया जाता है तो डिबगिंग अधिक कठिन होगी। – temporalslide

उत्तर

4

यह डिबगिंग उपयोग के लिए है, इसलिए आपको ऑब्जेक्ट पर कहने के लिए सब कुछ कहना उपयोगी है।

सब के बाद, आपको बुला रहा toString() आप इसे पूछा होता, i.toString() या "" + i साथ, लेकिन यदि आपको डिफ़ॉल्ट व्यवहार था वहाँ एक रास्ता गहरी प्रतिनिधित्व आप मिलता है पाने के लिए नहीं होगा का परिणाम चाहता था चाहते हैं तो ।

+0

'" "का उपयोग करना + i' यह एक अच्छा और सरल विचार है, धन्यवाद। – Oriol

संबंधित मुद्दे