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。

时间: 2024-10-05 20:01:07

JS单例对象与构造函数对象的区别的相关文章

反射破坏单例的私有构造函数保护

Java的反射破坏单例的私有构造函数保护,最典型的就是Spring的Bean注入,我们可以通过改造私有构造函数来防止. 在Singleton中,我们只对外提供工厂方法(获取单例),而私有化构造函数,来防止外面多余的创建. 对于一般的外部调用来说,私有构造函数已经很安全了.        public class Singleton { private Singleton(){} private static volatile Singleton instance = null; public s

类和对象的方法与属性---懒加载与私有事件---单例与私有化构造函数

对象属性: 1.private修饰的属性:只能在本类内部访问,分类和外部都不能访问(彻底私有) 2.fileprivate修饰的属性:在本类和分类中可以访问,外部不能访问(部分私有) 3.直接用let或var修饰的属性:在本类.分类和外部都可以访问(开放) 4.在分类中只能声明计算属性,不能声明存储属性 1 // 属性:可以被外界访问 2 var name:String? 3 4 // private修饰的属性:只能在本类内部访问,分类和外部都不能访问 5 private var age:Str

C# JS 单例

单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3,向整个系统公开这个实例接口 模式1: class Singleton { //私有,静态的类自身实例 private static Singleton instance = new Singleton(); //私有的构造子(构造器,构造函数,构造方法) private Singleton(){} //公开,静态的工厂方法 public static Singleton getInstance

JS单例设计模式

 单例,指的是只有一个实例的对象.    在应用单例模式时,生成单例的类必须保证只有一个实例的存在,很多时候整个系统只需要拥有一个全局对象,才有利于协调系统整体的行为.比如在整个系统的配置文件中,配置数据有一个单例对象进行统一读取和修改,其他对象需要配置数据的时候也统一通过该单例对象来获取配置数据,这样就可以简化复杂环境下的配置管理.    实现一:对象字面量 1 var singleton = { 2 name : value, 3 method : function(){ 4 //这里是方法

JS单例

s = (function S(){ var bean; function get(){ if(bean){ return bean }else{ bean = T(); return bean; } }; return {get:get} } )() 原文地址:https://www.cnblogs.com/413xiaol/p/8178953.html

Scala的单例对象

通常,一个类对应一个伴生对象,其方法就跟Java中的静态方法一样,举例:BigInt类的BigInt伴生对象有一个生成指定位数的随机素数的方法probablePrime,在REPL中运行下列代码: object HelloWorld{ def main(args:Array[String]){ for( i<- 1 to 10){ println(BigInt.probablePrime(10,scala.util.Random)); } } } 得到的结果如下: 523 977 839 911

原型、原型对象、构造函数、原型链理解

1. 基本概念: "原型属性"也可以叫做"原型"(prototype):所有函数都有prototype,我觉得可以理解为python中的类属性,不需要通过实例,直接用类(es5就是函数名)可以调用,下面列举了三种创建函数的方法,函数创建后都有prototype属性,prototype指向"原型对象". // 函数声明 function F1() { }; // 表达式定义 let F2 = function () { }; // 函数构造 let

java单例-积木系列

一步步知识点归纳吧,把以前似懂非懂,了解表面,知道点不知道面的知识归一下档. 懒汉式单例: 私有化构造函数,阻止外界实例话对象,调用getInstance静态方法,判断是否已经实例化. 为什么是懒汉,因为它是属于延迟加载这个实例的,也就是说不用到的时候,不实例化对象的. public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInst

菜鸟学设计模式系列笔记之单例设计模式(Singleton模式)

特殊的类: (1)类和它的实例间一般是一对多的关系.对大多数的类而言,都可以创建多个实例. 在需要这些实例时创建它们,在这些实例不再有用时删除它们.这些实例的来去伴随着内存的分配和归还. (2)但是有一些类,应该只有一个实例. 这个实例似乎应该在程序启动时被创建出来,且只有在程序结束时才被删除. Intent : 一个类仅有一个实例,自行实例化并向整个系统提供一个访问它的全局访问点 Motivation : 对于一些类来说,只有一个实例是很重要的 Singleton (1)定义一个Instanc