2016-08-04 7 views
8

ES5 भाषा spec clearly states कि Error(foo)new Error(foo) जैसा ही काम करता है।`त्रुटि()` से अधिक नई त्रुटि() `बेहतर कब है?

लेकिन मुझे लगता है कि जंगली में, लंबे new Error(foo) रूप अधिक आम है।

क्या इसके लिए कोई कारण है?

क्या कोई ऐसी स्थिति है जहां new Error(foo) का उपयोग Error(foo) का उपयोग करने के लिए बेहतर है?

+2

अपरकेस फ़ंक्शन नाम कक्षाओं पर विचार करने वाले स्थिर कोड चेक और जांच कर सकते हैं कि उन्हें नए के साथ बुलाया जाना चाहिए। –

+1

एक अन्य कारण यह है कि लोग नहीं जानते या जानते हैं लेकिन इसे पसंद करते हैं क्योंकि यही वह है जो उन्हें दिया जाता है कि नया उपयोग मानक पैटर्न रहा है। –

उत्तर

10

क्या इसके लिए कोई कारण है?

यह हमेशा new के साथ रचनाकारों को बुलाए जाने की आदत है। संगठनात्मक नियम!

new के बिना काम करते समय भी यह एक अच्छा अभ्यास है, और कई स्टाइल गाइड और संबंधित टूलींग द्वारा अनुशंसित किया जाता है। बीटीडब्ल्यू, ईएस 6 Error is subclassible के बाद से, और इसके उप-वर्गों को new की आवश्यकता होगी।

+0

ऐसा लगता है कि उप-वर्ग एक ही व्यवहार को लागू कर सकते हैं यदि वे चाहते थे, लेकिन ऐसा करने के लिए उनके लिए कोई आवश्यकता नहीं है। इससे पता चलता है कि 'नई' का उपयोग करके कस्टम त्रुटि ऑब्जेक्ट्स का निर्माण करना अच्छा अभ्यास होगा और इसलिए स्थिरता के लिए 'नया' का उपयोग करके मानक त्रुटि ऑब्जेक्ट्स भी बनाना वांछनीय हो सकता है। – joeytwiddle

+2

@joeytwiddle वास्तव में, 'कक्षा एक्स त्रुटि बढ़ाता है' [उसी व्यवहार को लागू नहीं कर सकता] [http://stackoverflow.com/a/31789308/1048572), यह हमेशा तब फेंकता है जब एक निर्माता को 'नया' के बिना बुलाया जाता है। – Bergi

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