2012-06-03 15 views
9

क्या सभी ब्राउज़रों में निम्न चेतावनी "फू" होगी, यहां तक ​​कि जब भी छोटा हो?एक कॉफ़ीस्क्रिप्ट क्लास का नाम प्राप्त करना?

class Foo 

alert(Foo.name) 

कुछ भी नहीं है दस्तावेज़ में कहा गया है, मुझे पता है कि IE समारोह नाम के साथ समस्या है, और मैं उलझन में साथ कई मुद्दों पर, इस बारे में खोला anyoftheseissues!

+0

डब्लूआरटी मिनीफाइड कोड - यह वास्तव में मिनीफायर और कॉन्फ़िगरेशन पर निर्भर करता है जो आप इसे पास करते हैं। अधिकांश को कॉन्फ़िगर किया जा सकता है नामित फ़ंक्शन स्टेटमेंट्स (जैसे UglifyJS के '--no-mangle-functions') को स्पर्श करने के लिए नहीं, इसलिए 'name' प्रॉपर्टी को ठीक काम करना चाहिए (जब तक ब्राउज़र बिल्कुल इसका समर्थन नहीं करता)। बेशक, संपत्ति के साथ कॉफीस्क्रिप्ट 1.3.3 के बाद मैन्युअल रूप से परिभाषित करता है, इसे हमेशा खनन के बावजूद काम करना चाहिए (जैसा कि इसे सादा स्ट्रिंग शाब्दिक संपत्ति के रूप में जोड़ा जाता है) – shesek

उत्तर

8

यही निर्भर हो सकता है की तरह कर रहा हूँ आप जिस कॉफीस्क्रिप्ट कंपाइलर का उपयोग कर रहे हैं उसके संस्करण पर। सबसे स्थिर स्थिर रिलीज (1.3.3) में, एक "नाम" संपत्ति डिफ़ॉल्ट रूप से उत्पन्न नहीं होती है।

class Foo 

var Foo; 
Foo = (function() { 
    function Foo() {} 
    return Foo; 
})(); 

के बाद से name संपत्ति अमानक और IE द्वारा वर्तमान में समर्थित नहीं है में संकलित, तुम सच में क्रॉस-ब्राउज़र उस पर भरोसा नहीं कर सकते। इस बारे में विस्तृत जानकारी MDN पर उपलब्ध हैं: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Name

+0

क्या आप संकेत देते हैं कि बाद में या पुराना संस्करण नाम संपत्ति उत्पन्न करेगा? इसके अलावा कुछ झंडा भी है जो इस डिफ़ॉल्ट को ओवरराइड करेंगे या आपको खुद को संपत्ति जोड़नी होगी। –

+0

मुझे लगता है कि इसे वास्तव में हटा दिया गया है, इसलिए पुराने संस्करणों में आपको अभी भी यह व्यवहार मिल सकता है, हां। – Niko

9

कि Foo.prototype में शामिल है वर्ग Foo का कोई भी तरीका अंदर से, आप लाइन

console.log @constructor.name 

सम्मिलित कर सकते हैं और यह

Foo 
लिखेंगे

आपके कंसोल लॉग में। HTH।

+3

अब यह स्पष्ट है (https://github.com/jashkenas/coffee-script/issues/2052 का अंत देखें) कि यह समर्थित नहीं है। जाओ और अगर आप इसे भी चाहते हैं तो इसके लिए पूछें! –

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