Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象在编程中的作用能否与高阶组件在React中的工作方式相比较_Javascript_Reactjs_Oop - Fatal编程技术网

Javascript 对象在编程中的作用能否与高阶组件在React中的工作方式相比较

Javascript 对象在编程中的作用能否与高阶组件在React中的工作方式相比较,javascript,reactjs,oop,Javascript,Reactjs,Oop,我是编程新手,在学习了一些JS之后,我决定做一些React。坦白地说,在我学习OOP的过程中,我无法正确理解对象的概念,因此决定继续学习,希望以后我能理解这个概念。后来,我在React中遇到了HOC的概念,它基本上帮助我们在React应用程序中重用特定的逻辑,也就是说,如果我们在多个地方使用了悬停逻辑,那么就是在我们创建HOC并在使用悬停逻辑的任何地方重用它的时候。我唯一的主要问题是面向对象编程中的对象是否以相同的方式工作,也就是说,每当我们在多个地方使用某个逻辑时,我们需要创建一个对象,然后再

我是编程新手,在学习了一些JS之后,我决定做一些React。坦白地说,在我学习OOP的过程中,我无法正确理解对象的概念,因此决定继续学习,希望以后我能理解这个概念。后来,我在React中遇到了HOC的概念,它基本上帮助我们在React应用程序中重用特定的逻辑,也就是说,如果我们在多个地方使用了悬停逻辑,那么就是在我们创建HOC并在使用悬停逻辑的任何地方重用它的时候。我唯一的主要问题是面向对象编程中的对象是否以相同的方式工作,也就是说,每当我们在多个地方使用某个逻辑时,我们需要创建一个对象,然后再重用它。我可以认为OOP中的对象像AOC一样反应吗? 面向对象编程依赖继承作为一种技术,在父子层次结构中的对象之间共享代码。父子层次结构的严格树状本质意味着,遇到这种情况并不罕见

在本例中,
Scanner
Printer
继承自
PoweredDevice
<代码>复印机需要共享
扫描仪
打印机
的行为,但在大多数面向对象编程语言中,不允许从双亲继承

其他语言和库支持一种称为组合的技术,作为继承的替代方法。React属于这一类。您可以使用高阶组件定义任意多个可重用行为,然后将它们全部应用于组件

功能复印机(){
返回(
// ...
)
}
使用扫描仪导出默认值(使用打印机(应用)))
您仍在创建层次结构,但在运行时动态创建它们。没有任何静态规则规定,
with printer
必须是
with poweredDevice
的子级,这与传统继承不同,传统继承在编写类时(编译之前)必须定义层次结构

React文档甚至提供了一个文档,其中说明了这是一个进行阅读以理解两种范式之间差异的好地方

总结如下:

  • OOP和HOC都支持代码重用
  • OOP类只能从一个父类扩展
  • React组件可以用任意数量的HOC包装
  • OOP只允许沿静态编译时层次结构重用
  • HOCs支持跨动态运行时层次结构的重用

事实并非如此,React组件是对象,尽管HOC是对象,但它们更像是OOP中的继承。@Titus,感谢您的评论。我的意思是说,假设我们有一个特定的逻辑(无论什么),它被用在,比如说,5个地方。在OOP中,我们不是在5个位置重复相同的逻辑,而是创建一个包含该逻辑的对象,通过实例化该对象,我们可以在这5个位置重用该逻辑。所以,基本上,对象在React中类似于HOC。因为HOC还包含我们可以重用的逻辑。这是真的吗?不,你将创建组件,如果你想给不同类型的组件添加相同的逻辑,你将创建HOC,例如,如果你想在多个地方显示一个图像和一些文本,你将创建一个组件(重用逻辑),如果你想把不同类型的组件包装成一个
,你将创建一个HOC(仍为逻辑重用,但为更高阶)。谢谢Dan的友好回答。问这个问题的原因是为了正确理解对象,为什么我们要在OOP中关心它们?那么,OOP中的对象确实包含了某种逻辑,我们可以反复使用它,而不是在多个地方复制和粘贴该逻辑。因此,如果我们在该逻辑中发现错误,那么好处将是c代码我们只需要更改一个位置(即对象),那么使用该对象的所有位置都将自动更改。这是真的吗?请Dan我真的需要您的帮助是的,您确实可以通过继承在OOP中共享代码,这意味着修复父类中的错误将修复所有子类中的相同错误。