簡體   English   中英

將嵌套對象解構為函數參數

[英]Destructuring nested objects as function parameters

在ES6中我們可以做到:

let myFunc = ({name}) => {
  console.log(name)
}

myFunc({name:'fred'}) // => logs 'fred'

但是如何對嵌套屬性執行此操作:

myFunc({event:{target:{name:'fred'}}}) // => I want it to log 'fred'

myFunc應該是什么樣的,以便記錄'fred'?

我不能改變傳入的對象。我希望使用解構來實現這個或其他一些合適的ES6方法。

你可以這樣做:

 const myFunc = ({event: {target: {name}}}) => { console.log(name) } myFunc({event: {target: {name: 'fred'}}}) 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

這是另一個實現,兩個參數都有,但第二個完全是optionnal:

 const myFunc = ( {name: name}, {event: {target: {name: eventTargetName = ''} = ''} = ''} = '' ) => { console.log(name, eventTargetName) } myFunc({name:'fred'}) myFunc({name:'papi'}, {event: {target: {name: 'fredo'}}}) 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

試試這個:

 let myFunc = ({ event: { target: { name } } }) => { console.log(name); }; myFunc({ event: { target: { name:'fred' } } }); // => logs 'fred' 

另請參閱MDN上的示例

你可以做:

 let myFunc = ( obj ) => { console.log(obj.event.target.name); }; myFunc({ event: { target: { name: 'fred' } } }); 

要么:

 let myFunc = ( {event: {target: { name } } } ) => { console.log(name); }; myFunc({ event: { target: { name: 'fred' } } }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM