当前位置: 首页 > 科技观察

强迫症的福音:函数组织成类的5个理由

时间:2023-03-17 18:22:33 科技观察

家族。两者在一定范围内有共同点,工作内容也可能有相似之处。无论如何,有时最好将函数编写为对象的方法。即使乍一看似乎并非如此,JavaScript本身也是围绕对象的概念构建的。课程如何运作?为什么要将函数转换为对象?以下5点将给出答案。JavaScript中的类快速入门JavaScript中的类是一个函数,通常您会这样写:functioncatName(){console.log("Tibbers");}您还可以使用箭头符号:catName=()=>console.log(“提伯斯”);这当然没有问题,但是如果你有一堆与猫相关的函数,想把它们附加到一个实例上怎么办?如果你想在不找出并告诉代码的情况下进行具体的实例目标呢?这就是“类”派上用场的地方。类通常有两部分:属性和方法。属性定义了类的具体实例值。方法对这些属性执行特定操作。属性在构造函数中设置,方法通常作为类的函数出现。所以一个“类”可能看起来像这样:classCat{constructor(name,age,sound){this.name=name;this.age=age;this.sound=sound;}speak=()=>console.log(this.sound);name=()=>console.log('hello,mynameis'+this.name);age=()=>console.log('Iam'+this.age);}这个基本包括80个JavaScript类的百分比。另外20%涉及扩展和构造类的不同方法,这超出了本文的范围。我们试图回答的问题是——为什么函数应该被组织到类中而不是仅仅作为独立代码。有组织的功能更多实用功能的目的是为代码创建范围和边界。当你编写一个函数时,你实际上是在对解释器说——嘿,我想打包一些东西并使用它。编写类的过程本质上是为您的代码创建另一个层次的组织。高效有用的代码取决于用户用编程语言组织和传达想法的能力。并且由于JavaScript编程语言组织松散,代码容易出现混乱无序。用户可以通过多种方式编写相同的内容,而代码仍然有效。所以将功能组织到类中的问题实际上是一个组织问题。函数是一种组织方法,而类只是更进一步。关于防止突变有一个误解,当你想保护一个变量不发生突变时,你需要防止它发生变化。然而,变化与变量的形状有关,而不是实际变量本身。变量的值可以改变,但形状不能。例如,查看以下对象:Tibbers={name:"Tibbers",type:"cat",color:"ginger"}当前形式的对象不受突变保护,因为您可以:Tibbers.owner="阿菲尼亚";通过添加另一个密钥对值,可以更改对象的形状。但是,如果使用类实例化对象Tibbers,则可以避免这种情况。您可以尝试传递一个新值,但它不会做任何事情。为什么防止突变如此重要?当数据的形状无法更改时,它会对代码的功能产生高度的确定性-使其在方法中更具功能性并减少在其他地方使用该对象的潜在副作用。所有基于对象的JavaScript在构建时都考虑了原型。这意味着您的代码从一个单一的全局范围开始,它分解成更小的环形范围,这些范围也可以分解成更小的范围。该图如下所示:属性从父对象继承到子对象因此,当链中下游的对象需要某些东西时,它会向其父对象请求。如果父进程没有,进程将继续沿着链向上运行,直到找到或返回一个未定义的进程。独立函数没有这种能力,因为它不遍历属性链。函数本质上位于window对象上,并且只能访问全局范围。为什么不让一切都全球化?由于不需要遍历所有值,一旦在JavaScript中声明了全局作用域,它在大多数情况下都不会消失。如果附加到此变量的数据相当大,它会由于内存空间不足而减慢您的应用程序及其有效处理事物的能力。容器化和模块化功能任何东西都可以模块化。实用模块化与逻辑推理和特定思想的接近性有关。任何人都可以说它的代码是模块化的。你可以把你的代码放在一个函数中,并指出它的模块化。但是,当使用“类”时,您是在系统地使用强制结构和内聚的思想来处理模块化。本质上,您是在容器化代码并组织其功能,以便实现一系列相关功能。因为这就是“类”所做的——基于它们执行的功能集合。JavaScript面向对象JavaScript是一种具有动态类型的多范式语言。多范式意味着不局限于单一的意识形态来构建逻辑。这意味着JavaScript不是纯函数式的,也不是纯面向对象的。它是一种语言,允许您混合和匹配编写和组织代码的方式,灵活地适应逻辑需求和条件。JavaScript的面向对象设计特性遵循基于原型的方法,这意味着类可以用于继承。JavaScript使用函数式方法和对象构造,这意味着将函数式特性和功能集成到类中是一种逻辑安排,并以一种相互关联的方式引入业务规则。总结将相关功能集成到类中并将它们转换为明确的面向对象模式有助于提高代码模块化和长期可重用性。在不同代码段之间建立清晰的界限和现有关系也可以比试图追踪范围和继承更快地识别问题区域和逻辑缺陷。所以,并不是所有的代码都必须是一个“类”,但是很多编写的代码都应该是。