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

Module pattern vs. instance of an anonymous constructor(模块模式与匿名构造函数的实例)
本文介绍了模块模式与匿名构造函数的实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以有一个所谓的模块模式,用于创建具有私有成员的单例:

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 directly in front of function

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

所以根据雅虎著名的javascript架构师!你应该使用第一种方法,你有他的理由。

这篇关于模块模式与匿名构造函数的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)