JS单例对象与构造函数对象的区别

JavaScript对象有几种:

内置对象如Global,Math对象等等。

本地对象如Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError。

然而这跟要说的内容并没有什么关系,正题:曾经(此秒之前)纠结过json对象和构造函数对象有什么关系,区别是什么,该怎么合理使用,今天心情...仔细思考探索了一下,于是皇天不负有心人,如下,或许共勉。

 

            var singleton={ name: 'Barrior', init: function(msg){ this.age=msg; this.alert(); return this; }, alert:function(){ alert('My name is '+this.name+', '+this.age+' years old.'); } }; var o1=singleton.init(21);    //My name is Barrior, 21 years old.
            var o2=singleton.init(23);    //My name is Barrior, 23 years old.
            alert( o1===o2 );             //true
            /** * 单例对象: * 不能消除对象的引用,适合执行(或创建或绘制)某些方法(或元素或图形),且不需要获取执行此方法的对象,简单说就是单纯地执行某些方法。 * 应用场景: * 适合存储一些全局函数,变量(变量可被修改哦),配置。 */
            
            
            function FnObject(){ this.name='Barrior'; } FnObject.prototype={ init: function(msg){ this.age=msg; this.alert(); }, alert: function(){ alert('My name is '+this.name+', '+this.age+' years old.'); } } var fn1=new FnObject();            //My name is Barrior, 21 years old.
            fn1.init(21); var fn2=new FnObject();            //My name is Barrior, 23 years old.
            fn2.init(23); alert( fn1===fn2 );                //false
            /** * 构造函数对象: * 多例对象 -> 既可以执行创建(或绘制)元素(或图形)等效果,又可以获取绘制当前图像的当前对象,如果存在后期操作,如更新图像的某些属性或位置,那么就需要获取当前对象,然后通过执行当前对象的预留方法来达到效果了。 * */

 

 

 

最后不是本文旨意的一些区别:一般来说对象字面量形式{}创建对象效率高,不需要使用new。

 

你可能感兴趣的:(JS单例对象与构造函数对象的区别)