2013-02-13 10 views
13

मैंने फ़ायरफ़ॉक्स addon-sdk में कई उदाहरण देखे हैं जो एक चर घोषित करते समय निम्न शैली का उपयोग करते हैं।जावास्क्रिप्ट में var {VariableName} = आवश्यकता ('') का उपयोग क्यों करें?

var { Hotkey } = require("sdk/hotkeys"); 

क्या फर्क यह var HotKey का उपयोग करने से var { Hotkey } साथ बनाता है? अतिरिक्त फूल ब्रैकेट का उपयोग क्यों किया जाता है?

+0

अपने आप को पता नहीं है, लेकिन यह आप के लिए कुछ जानकारी हो सकता है : http://stackoverflow.com/questions/4445496/curly-bracket-variable-in-javascript – CodeMoose

उत्तर

14

यह destructuring assignment है।

var Hotkey = require('sdk/hotkeys').Hotkey; 

भी देखें harmony:destructuring प्रस्ताव है, जो निम्न उदाहरण में शामिल हैं::

var {Hotkey} = require('sdk/hotkeys'); 

के बराबर है

// object destructuring 
var { op: a, lhs: b, rhs: c } = getASTNode() 

// digging deeper into an object 
var { op: a, lhs: { op: b }, rhs: c } = getASTNode() 
+0

मैं कॉफीस्क्रिप्ट से अवधारणा से परिचित हूं: http://coffeescript.org/#destructuring। मेरा मानना ​​है कि ईसीएमएस्क्रिप्ट कुछ इसी तरह अपना सकता है (यही कारण है कि यह पहले से ही फ़ायरफ़ॉक्स ऐड-ऑन में दिखाई दे रहा है)। – davidchambers

+0

धन्यवाद। असाइनमेंट को नष्ट करना दिलचस्प लगता है। हालांकि, मुझे एक समान उदाहरण नहीं दिखाई देता है जैसे 'var {Hotkey} = आवश्यकता ('sdk/hotkeys'); 'प्रलेखन लिंक में जो आपने इंगित किया है। –

+2

'var {op: a} = getASTNode()' 'var a = getASTNode()। Op' के बराबर है। ":" के बाईं ओर टोकन संपत्ति का नाम है और ":" के दाईं ओर टोकन परिवर्तनीय नाम है। अक्सर, हालांकि, दोनों मामलों में एक ही नाम का उपयोग करना चाहता है, जैसे 'var {हॉटकी: हॉटकी} = आवश्यकता (' sdk/hotkeys ')। चूंकि यह एक आम पैटर्न है, वहां एक शॉर्टेंड है: 'var {Hotkey} = आवश्यकता ('sdk/hotkeys')'। – davidchambers

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