能够摄取必要营养的人要比吃得很多的人更健康,同样,真正的学者往往不是读了很多的书的人,而是读了有用的书的人。--亚里斯提卜

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。

 

posted @ 2015-09-02 17:27  Barrior_花祁  阅读(1327)  评论(0编辑  收藏  举报