2015-02-16 12 views
6

मैं फेसबुक के फिक्स्ड डेटा-तालिका के स्रोत कोड पढ़ रहा था, और मैं thisजावास्क्रिप्ट: var {left, ... props} = this.props;

var {left, ...props} = this.props; 

क्या है कि इसका मतलब है पाया? क्या यह एक नया अर्थपूर्ण है? मैं उलझन में हूँ ओओ

+2

यह ES6 destructuring काम है। – Pointy

+0

संभावित डुप्लिकेट [Is var {रूट, रीडायरेक्ट, रूटहैंडलर, लिंक} = राउटर; जावास्क्रिप्ट में मान्य?] (http://stackoverflow.com/questions/27136394/is-var-route-redirect-routehandler-link-router-valid-in-javascript) –

+0

@ Qantas94Heavy, यह काफी डुप्लिकेट नहीं है क्योंकि दूसरा सवाल बाकी विनाशकारी का उल्लेख नहीं करता है। – FakeRainBrigand

उत्तर

12

यह असाइनमेंट proposed for ES7 (और जेएसएक्स उपकरण और बेबेल में बेसब्री से कार्यान्वित) का एक विशेष रूप है। यह दो चर बनाता है: left, और props

left का मूल्य this.props.left है।

propsthis.props के सभी अन्य गुणों के साथ एक वस्तु है (left को छोड़कर)।

यदि आप इसे destructuring यह इस तरह दिखना चाहते हैं बिना लिखा है:

var left = this.props.left; 
var props = {}; 

Object.keys(this.props).forEach(function(key, index){ 
    if (key !== 'left') { 
     props[key] = this.props[key]; 
    } 
}, this); 

कि एक से अधिक कुछ वर्ण बंद मुंडा है :-)

+0

क्या आप इस प्रकार के "आराम विनाशकारी" के लिए एक लिंक प्रदान कर सकते हैं? यह कम से कम मेरे लिए Traceur में काम नहीं करता है। –

+0

https://people.mozilla.org/~jorendorff/es6-draft.html#sec-destructuring-assignment (संपादित करें: और 12.14.5.4) – FakeRainBrigand

+0

यह संदर्भ यहां वाक्यविन्यास का वर्णन नहीं करता है। यह 'var [a, ... b] = [1, 2, 3] 'के रूप में, सरणी को शामिल करने के लिए एक वाक्यविन्यास का वर्णन करता है। मैंने यहां कभी भी सिंटैक्स नहीं देखा है, जो यह नहीं कहता है कि यह अस्तित्व में नहीं है ... –

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