[英]Why use destructuring here?
我在 The Odin Project 上问了这个问题,我遇到了这个问题,并被引导研究解构,我做到了。 我了解正在发生的事情,但我不知道为什么要这样做。 简单地使用没有解构大括号的原始变量名称会得到相同的结果(请参阅我的 jfiddle 链接,其中我删除了解构并得到相同的结果)。 当我被要求使用更多的代码、打字和复杂性来达到相同的结果时,我发现很难学到东西。 通过在 const Person 中使用return {sayName}
和在 const Nerd 中使用const {sayName} = Person(name)
什么好处? 我在 jfiddle 中使用了return sayName
和const sayName
并得到了相同的结果。
原始代码:
const Person = (name) => {
const sayName = () => console.log(`my name is ${name}`)
return {sayName}
}
const Nerd = (name) => {
// simply create a person and pull out the sayName function with destructuring assignment syntax!
const {sayName} = Person(name)
const doSomethingNerdy = () => console.log('nerd stuff')
return {sayName, doSomethingNerdy}
}
const jeff = Nerd('jeff')
jeff.sayName() //my name is jeff
jeff.doSomethingNerdy() // nerd stuff
const Person = (name) => {
const sayName = () => console.log(`my name is ${name}`)
return sayName
}
const Nerd = (name) => {
// simply create a person and pull out the sayName function with destructuring assignment syntax!
const sayName = Person(name)
const doSomethingNerdy = () => console.log('nerd stuff')
return {sayName, doSomethingNerdy}
}
const jeff = Nerd('jeff')
jeff.sayName() //my name is jeff
jeff.doSomethingNerdy() // nerd stuff
普遍的共识是,这是解构的一个坏例子,但我已经走得太深了,仍然会尝试理解它。
通过使用解构,可以向Person
添加附加功能。
例如,Person 需要跳转:
const Person = (name) => {
const sayName = () => console.log(`my name is ${name}`)
const jump = () => console.log('I jumped') // new feature
return {sayName, jump} // jump can inserted into the object here and used externally
}
然后,正如评论中所指出的,将 Person 传递给 Nerd 的更好方法是:
const Nerd = (name) => {
// simply create a person and pull out the sayName function with destructuring assignment syntax!
const doSomethingNerdy = () => console.log('nerd stuff')
return {...Person(name) , doSomethingNerdy}
}
在finally之前可以解构Nerd,Person和Nerd里面的所有功能都可以使用。
我想这就是他们想要达到的目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.