javascript - 请问这些代码为什么叫做单例模式,创建新的变量不是也可以创建实例吗?
迷茫
迷茫 2017-04-11 11:23:22
[JavaScript讨论组]

var foo2=(function (){

var so = 'cool';
var an = [1,2,3];
function doSo() {
    console.log(so);
}
function doAn() {
    console.log(an.join("!"));
}
return {
    doSo:doSo,
    doAn:doAn

};

})();

var foo = foo2;
var aa = foo2;
foo.doAn();
aa.doSo();

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
大家讲道理

所谓单例模式,就是说这个东西只会有一个,你没有办法生成新的具备同样结构的东西。

保证系统中一个类只有一个实例。

你这里foo和aa用的都是同一个foo2变量。以后不管你怎么操作,都只会操作foo2这个变量。

给个链接

阿神
foo === aa

这2个对象相等,哪里创建了新的实例???

PHPz

这里使用闭包,返回一个对象,一直保持着对doSo、doAn的引用,foo2每次赋值都是同一个引用对象。

黄舟

类似于变量 foo 和 aa 都指向创建foo2时的内存地址,因此是一个实例。foo === aa // result: true

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号