既然都能任意地方点出来,单列写的代码多一些,为什么不全都把单列写成全局对象?
我感觉没撒区别 我一般都用全局对象
一个cc.Class单列,为什么不能调用里面的方法?
getInstance()之后就能调用里面的方法
全局变量只能保证全局可以访问 单列模式主要是确保程序中只有一个实例
我就全部用全局对象,基本不用单例
用单例多次一举了
一个不可被修改的全局变量,就是一个单例,没毛病,js这么灵活,想怎么写怎么写
1、单例可以控制获取的时候才创建。全局你怎么写?
2、单例可以提供静态函数以便在退出前释放数据。
3、单例不可以改写变量指向:全局一个不小心将 if (xxxx == a) 写成了 if (xxx = a),就爽了。
你的第一条成立得分情况
第二三条就不对了
var name = '';
var age = 0;
var oba = {
init(_name, _age){
name = _name;
age = _age;
},
getName(){
return name;
},
getAge(){
return age;
},
save(){
cc.sys.localStorage.setItem('name', name);
cc.sys.localStorage.setItem('age', age);
},
clear(){
name = '';
age = 0;
}
}
cc.js.value(window, 'control', oba)
// index.js
control.init('abc', 18);
control.getName();
这段代码运行执行,你把control改了试试,你能改我把cocos倒着写
但这样做的话,怎样控制释放引用来释放数据呢?
所以我喜欢用函数包装一个变量返回,
在需要的时候(比如重登游戏之前)干掉引用以回收
所以defineProperty的做法我一般用于某些成员,而不是全局变量或单例变量