2016-05-05 16 views
11

मैं एक ईएस 6 कक्षा परिभाषा देख रहा हूं और निर्माता को तर्क समझ नहीं पा रहा हूं।ES6 वर्ग कन्स्ट्रक्टर तर्क

export class Modal { 
    constructor($modal, {size = null,} = {}) { 
     // stuff 
    } 
} 

मैं इस {size = null,} = {} से उलझन में हूँ: यहाँ क्लास है। क्या यह एक तर्क है? इसका क्या मतलब है?

+2

संभावित डुप्लिकेट [जावास्क्रिप्ट कार्यों के लिए ऑब्जेक्ट पैरामीटर सिंटैक्स पर मुझे जानकारी कहां मिल सकती है?] (Http://stackoverflow.com/q/10804982/1048572) और [क्या (राज्य = {}) => राज्य मतलब] (http://stackoverflow.com/q/35526463/1048572) – Bergi

उत्तर

10

यह एक दिए गए डिफ़ॉल्ट मान के साथ object destructuring है।

आप एक सामान्य चर

export class Modal { 
    constructor($modal, {size = null } = {}) { 
    console.log(size); // prints the size value from the given object 
    } 
} 

की तरह निर्माता अंदर "आकार" का उपयोग कर सकते की तरह

{ size: true } 

एक obj आप कुछ भी उत्तीर्ण नहीं होते हैं पास या आप एक वस्तु पार कर लेते हैं "आकार" के बिना, आकार शून्य हो जाएगा। आप इस तरह के असाइनमेंट कर सकते हैं। बस अल्पविराम से अलग हो जाओ।

उदाहरण:

constructor($modal, { size = null, foo, bar = "test" } = {}) 

इस मामले यदि आप संपत्ति "foo" बिना एक वस्तु पारित में यह अपरिभाषित हो जाएगा, बाकी में कार्य करता है जैसे मैं ऊपर उल्लेख किया है।

यह भी उल्लेखनीय है कि आपको constructor घोषणा में नियोजन के विनाश के अंत में = {} जोड़ना होगा। यह तब होता है जब आप कुछ भी पास नहीं करते हैं। अन्यथा आपको कुछ ऑब्जेक्ट पास करना होगा (खाली हो सकता है)।

+0

ठीक है, यह वास्तव में इस मामले में असाइनमेंट नहीं है ... – Bergi

+0

@bergi यह एक वस्तु विनाशकारी होना चाहिए, है ना? संशोधित –

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