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。

  • 相关阅读:
    linux API 获得文件属性
    Linux 服务端设计
    Linux C++ 使用LuaBind嵌入lua脚本
    Linux 编译安装Boost (转)
    Navicat for My SQL 查看中文乱码问题
    fastbuild联编ue4 shader的使用
    fastbuild进行ue4 shader连编
    maya 插件学习之pythonCharm和Qt环境搭建
    ue4 头发渲染
    ue4 新渲染管线整理
  • 原文地址:https://www.cnblogs.com/barrior/p/4778232.html
Copyright © 2011-2022 走看看