gpt4 book ai didi

javascript - JavaScript 中的原型(prototype)与函数式 OOP

转载 作者:可可西里 更新时间:2023-11-01 01:40:03 24 4
gpt4 key购买 nike

在编写面向对象的脚本时,每种类型/方法的优缺点是什么?

就我个人而言,我发现闭包(函数式?方法)是一种更自然且或许更优雅地封装状态的方法。但是,我听说这种闭包的使用在 JavaScript 实现中速度较慢。

我至少想知道原型(prototype)方法在哪里最合适。

最佳答案

“函数式”风格(大多数人会称之为“传统 OOP”):

  • 优点:OOP 以每个人(或至少 Java 程序员)熟悉的方式工作,包括“真正的”私有(private)方法和变量
  • 缺点:Javascript 不是为这种类型的 OOP 设计的,因此您最终要跳过很多环节才能让它工作。这些环使调试变得更加困难,并且还会增加性能成本(尽管确切的成本将取决于您使用它们的方式/数量)

原型(prototype)样式:

  • 优点:它是 Javascript 的设计方式中的 OOP。
  • 缺点:这不是您习惯的(除非您有其他原型(prototype)继承语言的背景)

因此,如果性能对您来说不是一个大问题,并且您只熟悉传统的 OOP……那就去做吧(来自 APress 的 Pro Javascript Design Patterns 有一个很好的模式)。但是,如果性能很重要,或者您担心额外的抽象层会使调试变得复杂,请花时间阅读原型(prototype)继承的工作原理;你会因此而成为更好的 Javascript 程序员。

附言如果您担心原型(prototype)样式没有真正的“私有(private)”方法,我强烈建议您阅读: http://snook.ca/archives/javascript/no-love-for-module-pattern它很好地解释了为什么真正的“私有(private)”成员实际上是一件坏事(至少在大多数 JS 开发环境中)。

关于javascript - JavaScript 中的原型(prototype)与函数式 OOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com