zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    eclipse如何与git 配合工作。
    git托管代码(二)
    PPC2003 安装 CFNET 3.5成功
    我的Window Mobile WCF 項目 第三篇 WM窗体设计
    我的Window Mobile WCF 項目 第一篇Mobile开发和WinForm开发的区别
    我的Window Mobile WCF 項目 第七天
    我的Window Mobile WCF 項目 第二篇 WindowsMobile访问WCF
    WCF 用vs2010 和 vs2008的简单对比测试
    vs2010beta1 和 搜狗输入法 冲突,按下 Ctrl 键就报错,重装搜狗解决
    我的Window Mobile WCF 項目 第六天 (二)
  • 原文地址:https://www.cnblogs.com/barrior/p/4778232.html
Copyright © 2011-2022 走看看