码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-09-02 18:48:52      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

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单例对象与构造函数对象的区别

标签:

原文地址:http://www.cnblogs.com/aiweidong/p/4778232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!