2017-04-03 4 views
7

ES6 दस्तावेज़ों की समीक्षा करते समय, मैंने ध्यान दिया कि अधिक verbose Object.assign() विधि पर फैलाव वाक्यविन्यास का उपयोग करने की अनुशंसा की जाती है। लेकिन, मैं थोड़ा उलझन में हूं कि यह कैसे पूरा किया जा रहा है।{... ऑब्जेक्ट, प्रॉपर्टी: वैल्यू} स्प्रेड सिंटैक्स के साथ कैसे काम करता है?

object इस मामले में key: value जोड़े तक तोड़ दिया जा रहा है, जिसके बाद अल्पविराम के अधिकार पर संपत्ति या तो जोड़ा या ओवरराइट किया गया है, और अंत में फिर से इकट्ठा किया जा रहा है?

+0

इस http://stackoverflow.com/a/41615569/7404943 – barbsan

+0

संक्षेप –

+1

आप निश्चित रूप से नहीं पढ़ रहे थे कि यह पढ़ें * ES6 * दस्तावेज़ - ऑब्जेक्ट फैल अभी भी एक प्रयोगात्मक प्रस्ताव है। तुम क्या पढ़ रहे थे कृपया इसे लिंक करें। – Bergi

उत्तर

3

क्या इस मामले में वस्तु को तोड़ दिया जा रहा है: मूल्य जोड़े, जिसके बाद अल्पविराम के अधिकार पर संपत्ति या तो जोड़ा या ओवरराइट किया गया है, और अंत में फिर से इकट्ठा किया जा रहा है?

मूल वस्तु object की कुंजी-मान जोड़ों वास्तव में जो एक अतिरिक्त संपत्ति var2 (वे newObject के लिए संयुक्त किया जा रहा है) है नई वस्तु के साथ संयोजन (विलय) में इस्तेमाल किया जा रहा है।

आप इसे object के रूप में सोच सकते हैं newObject का एक सबसेट बन रहा है जहां प्रसार वाक्यविन्यास का उपयोग किया जा रहा है, जबकि एक ही कुंजी वाले गुणों को ओवरराइड किया जा रहा है।

नीचे दिए गए उदाहरण की जाँच करें:

const object = { txt: 'Test' }; 
 
const newObject = {...object, var2: 'aa' }; 
 

 
// logs Object {txt: "Test", var2: "aa"} 
 
console.log(newObject); 
 

 
const object2 = { txt: 'Test' }; 
 
const newObject2 = {...object, txt: 'Test2', var2: 'aa' }; 
 

 
// Object {txt: "Test2", var2: "aa"} 
 
console.log(newObject2); 
 

 
// merging all objects to a new object 
 
var object3 = {first: 'Hello', second: 'World'}; 
 
var newObject3 = {...object, anotherVar: 'stack', ...object2, ...object3}; 
 

 
// Object {txt: "Test", anotherVar: "stack", first: "Hello", second: "World"} 
 
console.log(newObject3);

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