模块模式与匿名构造函数的实例

2024-01-12

于是就有了这个所谓的模块模式用于创建具有私有成员的单例:

var foo = (function () {
    var _foo = 'private!';
    return {
        foo: function () { console.log(_foo); },
        bar: 'public!'
    }
})();

还有这个方法是我自己找到的,但没看到有写:

var foo = new function () {
    var _foo = 'private!';
    this.bar = 'public!';
    this.foo = function () { console.log(_foo); };
}

我想肯定有一个原因为什么没有人写这方面的文章,而有大量关于模块模式的文章。这种模式有什么缺点吗?也许是速度,还是浏览器兼容性?


在这种情况下,您似乎只使用一个实例对象那个"class"。所以可能想看看道格拉斯·克罗克福德的想法putting new直接在前面function http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/:

通过使用new为了调用该函数,该对象持有一个无价值的prototype目的。这浪费了内存,而且没有抵消优势。如果我们不使用 new,我们就不会将浪费的原型对象保留在链中。因此,我们将使用 () 以正确的方式调用工厂函数。

雅虎著名的 javascript 架构师是这样说的!你应该使用第一种方法,你有他的理由。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模块模式与匿名构造函数的实例 的相关文章

随机推荐

  • 从字符串中删除 HTML

    我正在尝试从 RSS 源中清除 HTML 编码 我不知道如何设置以下内容来取出 HTML 编码 var rssFeed XElement Parse e Result var currentFeed this DataContext as
  • 使用变换比例时文本抖动

    我试图在悬停时缩放按钮的大小 但是完成此操作后 文本看起来不稳定 我查看了其他一些帖子并尝试了一些建议 例如使用 webkit backface visibility hidden transform translateZ 0 and we
  • C# xml序列化去除锯齿状数组元素名称

    我有以下课程 public class MainRequest private Request dataField XmlElementAttribute Parameters public Request Parameters get r
  • 发生异常: pyspark.sql.utils.AnalysisException '带有流源的查询必须使用 writeStream.start();;\nkafka 执行'

    在代码处 如果不是 df head 1 isEmpty 我有例外 Exception has occurred pyspark sql utils AnalysisException Queries with streaming sourc
  • 元整数平方根的无限递归

    再会 我的一个朋友询问如何将整数平方根函数转换为元函数 这是原始函数 unsigned isqrt unsigned value unsigned sq 1 dlt 3 while sq lt value sq dlt dlt 2 retu
  • 在 Yii 中循环使用事务

    我有一个活动记录数组 并希望以这种方式通过循环更改其中的某些字段 error false foreach items as item item gt is paid self PENDING error error item gt save
  • 更改 SwiftUI 中的 DisclosureGroup 指示符图像

    我正在尝试更改 SwiftUI 中 DisclosureGroup 的指示符图像 理想情况下 我想要一个自定义图像 我尝试用自己的方法来实现这一点ButtonStyle struct TestButtonStyle ButtonStyle
  • 在docker容器中安装Postgis

    我像往常一样使用 postgres 图像通过 docker 创建了一个数据库 docker run d name some postgres e POSTGRES PASSWORD mypassword v HOME postgres da
  • 错误“安全警告:没有向 Rack::Session::Cookie 提供秘密选项”[重复]

    这个问题在这里已经有答案了 可能的重复 没有为 Rack Session Cookie 警告提供秘密选项 https stackoverflow com questions 10374871 no secret option provide
  • HTML5 表单验证真的可以访问吗?

    所以我读了很多文章说 HTML 5 表单验证是可以访问的 东西required属性将阻止表单被提交 字段留空 但是当我在 Chrome 上的 NVDA 和 Android 上的 BackTalk 上测试我的表单时 如果我没有填写输入 它会重
  • Uiautomatorviewer SWT 异常

    由于 StackExchange 建议我不要寻求帮助或澄清以前存在的帖子 https stackoverflow com questions 48128648 uiautomatorviewer is not working throwin
  • 多线程问题

    我正在使用计时器来重置用作警告框的标签 基本上 如果用户做了某件事 更具体地说 出了问题 例如 他使用了程序无法识别的单词 这会尽早捕获出现的问题并将发生的情况返回给他 以便他可以更改输入 重置会在 5 秒后清空标签 以防止他看到类似 请不
  • 使用 mget() 将 data.table 与 rbindlist() 连接时出现意外错误消息

    准备的同时这个答案 https stackoverflow com a 47670107 3817004 我收到错误消息 错误 找不到 spine hlfs 的值 从跑步 setDT giraffe rbindlist mget df na
  • Android 标记自定义信息窗口

    我正在使用谷歌地图V2 我需要展示ListView 风俗ListView带图像 自定义InfoWindow 我尝试过并且只在以下方面取得了成功View 问题是我无法得到listItemClick event googleMap setInf
  • 当函数属于必须解析的类时,如何向 IServiceCollection 注册委托或函数?

    我正在使用 Microsoft Extensions DependencyInjection 中的 IServiceCollection IServiceProvider 我想将委托注入到一个类中 public delegate Valid
  • Java 将表面分割成小方块

    我想知道是否有任何算法可以执行以下操作 给定一个特定的表面 它将其分成相同大小的更小的矩形 像这个示例图一样 灰色区域是表面 红色方块是分区本身 我在想是否有一种优化的方法来做到这一点 一个非常糟糕的方法是在所有像素中进行 for 循环 并
  • 将日期格式更改为 ddth mmm,yyyy

    我正在网络表单上打印一些日期 目前我的日期格式是dd mmm yyyy hh mm 如何将日期格式更改为ddth mmm yyyy for例子2016年5月17日 hh mm 这是我的代码 lastlogin DateTime Parse
  • /usr/bin/ld: 找不到 -lpthreads

    我正在 Fedora 22 上编译 NVIDIA Caffe 工具 但遇到问题需要查找lpthread图书馆 Determining if the pthread create exist failed with the following
  • 如何更改R图表中的默认字体大小

    我正在使用 R 包 cooccurr 无法弄清楚如何更改关联图形中的字体大小 par 方法似乎不起作用 这是包中给出的示例 data finches cooccur finches lt cooccur mat finches type s
  • 模块模式与匿名构造函数的实例

    于是就有了这个所谓的模块模式用于创建具有私有成员的单例 var foo function var foo private return foo function console log foo bar public 还有这个方法是我自己找到