将嵌套对象解构为函数参数
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 方法。
试试这个:
let myFunc = ({ event: { target: { name } } }) => {
console.log(name);
};
myFunc({ event: { target: { name:'fred' } } }); // => logs 'fred'
另见 examples on MDN。
你可以简单地这样做:
const myFunc = ({event: {target: {name}}}) => {
console.log(name)
}
myFunc({event: {target: {name: 'fred'}}})
.as-console-wrapper { max-height: 100% !important; top: 0; }
这是另一个实现,两个都在参数中,但第二个完全是可选的:
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 = ( 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' } } });
在 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 方法。
试试这个:
let myFunc = ({ event: { target: { name } } }) => {
console.log(name);
};
myFunc({ event: { target: { name:'fred' } } }); // => logs 'fred'
另见 examples on MDN。
你可以简单地这样做:
const myFunc = ({event: {target: {name}}}) => {
console.log(name)
}
myFunc({event: {target: {name: 'fred'}}})
.as-console-wrapper { max-height: 100% !important; top: 0; }
这是另一个实现,两个都在参数中,但第二个完全是可选的:
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 = ( 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' } } });