gpt4 book ai didi

javascript - 普通函数与直接函数的效率?

转载 作者:行者123 更新时间:2023-11-30 18:26:35 24 4
gpt4 key购买 nike

有人提到立即或自执行函数必须存储整个堆栈。这是真的吗...如果是的话,使用模块模式(基于立即函数)与普通函数的优缺点是什么?

一个函数本质上是私有(private)的,但是你可以返回你想公开的项目,所以它可以处理隐私。

我看到的主要区别是,您没有全局导入,也没有能力确保开发人员(等等,我)将 new 与函数一起使用(或者它很复杂)。

一般来说,当试图提供隐私和状态时应该使用模块模式,什么时候应该只使用普通函数?

第二个问题是函数在与 new 一起使用时是否提供状态?

最佳答案

任何函数闭包持续存在是因为它内部有对变量或函数的持久引用,它会占用一定量的内存。在今天的计算机(甚至手机)中,这个内存量通常是微不足道的,除非你以某种方式重复它数千次。所以,使用语言特性来解决你的设计问题通常比担心这个内存量更重要。

当您说“整个堆栈”时,顶层自执行函数的调用堆栈非常小。除了正在调用的一个函数外,堆栈上实际上没有其他任何东西。

一个函数也是一个对象。因此,当它与 new 一起使用时,如果您为这些属性赋值,它会创建一个可以具有状态(它的属性)的新对象。这是在 javascript 中创建对象的主要方式之一。您可以调用一个函数并检查它的返回值,或者您可以将它与 new 一起使用,该函数用作新对象的构造函数。给定的功能通常设计为以一种或另一种方式使用,而不是两种方式。

模块模式通常用于控制哪些变量是公共(public)的,以及何时将它们公开以将它们放入使用很少的顶级全局变量的结构化 namespace 中。它不是你真正选择的东西而不是自执行函数,因为它们并没有真正解决同样的问题。您可以在此处阅读有关模块模式的更多信息:http://www.yuiblog.com/blog/2007/06/12/module-pattern/

您可以在此处了解一些选项:http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depthhttp://www.klauskomenda.com/code/javascript-programming-patterns/ .

根据一个人试图解决的特定问题或特定的设计问题来讨论给定技术的优缺点比在您询问的事情时泛泛地讨论哪个更好更容易并没有真正解决等同的问题。

我所知道的关于 protected 成员和私有(private)成员(可以破解成 javascript,但不是核心语言功能)的最佳引用是这个:http://javascript.crockford.com/private.html .当您使用此方法而不是语言的默认原型(prototype)功能时,您正在做出权衡,但如果您确实需要它,您可以实现隐私。但是,您应该知道 javascript 在构建时并没有考虑到私有(private)或 protected 方法,因此为了获得那种级别的隐私,您正在使用一些关于如何编写代码的约定来实现这一点。

关于javascript - 普通函数与直接函数的效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669775/

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