单例和全局对象有什么区别吗?

既然都能任意地方点出来,单列写的代码多一些,为什么不全都把单列写成全局对象?

我感觉没撒区别 我一般都用全局对象

一个cc.Class单列,为什么不能调用里面的方法?

getInstance()之后就能调用里面的方法

全局变量只能保证全局可以访问 单列模式主要是确保程序中只有一个实例

我就全部用全局对象,基本不用单例
用单例多次一举了

一个不可被修改的全局变量,就是一个单例,没毛病,js这么灵活,想怎么写怎么写:7:

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倒着写:joy:

但这样做的话,怎样控制释放引用来释放数据呢?

所以我喜欢用函数包装一个变量返回,
在需要的时候(比如重登游戏之前)干掉引用以回收

所以defineProperty的做法我一般用于某些成员,而不是全局变量或单例变量