js 单例模式的实现方式----闭包和构造函数内部判断

闭包:

var singleton = function( fn ){
   var result;
    return function(){
       return result || ( result = fn .apply( this, arguments ) );
    }
}//test
function aa(){}
var a = aa()
var b = aa()
a===b

  

构造函数内部判断

function Construct(){
    // 确保只有单例
    if( Construct.unique !== undefined ){

        return Construct.unique; 

    }
    // 其他代码

    this.name = "Construct";
    Construct.unique = this;

}
//test
var t1 = new Construct() ;
var t2 = new Construct() ;
t1 === t2

  

时间: 2024-10-24 00:41:35

js 单例模式的实现方式----闭包和构造函数内部判断的相关文章

js单例模式详解实例

这篇文章主要介绍了什么是单例单例模式.使用场景,提供了3个示例给大家参考 什么是单例? 单例要求一个类有且只有一个实例,提供一个全局的访问点.因此它要绕过常规的控制器,使其只能有一个实例,供使用者使用,而使用着不关心有几个实例,因此这是设计者的责任 In JavaScript, Singletons serve as a shared resource namespace which isolate implementation code from the global namespace so

JS对象创建常用方式及原理分析

====此文章是稍早前写的,本次属于文章迁移@2017.06.27==== 前言 俗话说"在js语言中,一切都对象",而且创建对象的方式也有很多种,所以今天我们做一下梳理 最简单的方式 JavaScript创建对象最简单的方式是:对象字面量形式或使用Object构造函数 对象字面量形式 1 var person = new Object(); 2 person.name = "jack"; 3 person.sayName = function () { 4 ale

js单例模式

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点. 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象.一个最好的办法就是,让类自身负责保存它的唯一实例.这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法. 为了帮助大家更好地理解单例模式,大家可以结合下面的类图来进行理解,以及后面也会剖析单例模式的实现思路: 下面就看看具体的实现代码(看完之后你会惊讶道:真是这样的!): /// <summary> /// 单例

js中this绑定方式及如何改变this指向

this的绑定方式基本有以下几种: 隐式绑定 显式绑定 new 绑定 window 绑定 箭头函数绑定 隐式绑定 第一个也是最常见的规则称为 隐式绑定. var a = { str: 'hello', sayHi() { console.log(this.str) } } a.sayHi() a 调用sayHi,所以this指向了对象a 我们来看一个类似但稍微高级点的例子. var wrapper = { name: 'user1', sayName() { console.log(this.n

单例模式(懒汉方式和饿汉方式)

Singleton 单例模式(懒汉方式和饿汉方式) 单例模式的概念: 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 关键点: 1)一个类只有一个实例       这是最基本的 2)它必须自行创建这个实例 3)它必须自行向整个系统提供这个实例 -----------------------------------------------------------------------------------------

JS继承的实现方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function(){ console.log(this.name + '正在睡觉!'); } } // 原型方法 Animal

Java单例模式 多种实现方式

一:通过静态私有成员实现单例模式 (1):私有化构造函数 (2):new静态实例属性对象,加锁. 单例类: package SinglePag; /* * 构造函数私有化,结合锁+静态的概念 实现单例模式 */ public class SingleDemo { //防止类的实例化 private SingleDemo(){ } //静态 实例 属性 private static SingleDemo singleD; //获取对象实例 (单例的方式 ),锁住当前类(加锁) public syn

js几种继承方式(六种)

JS实现继承的几种方式前言:大多数语言都支持两种继承方式: 接口继承和实现继承 ,而javaScript中无法实现接口继承,javaScript只支持实现继承,而且其实现继承主要是依靠原型链来实现.主要继承方式如下:1.原型链继承2.构造函数继承3.实例继承4.拷贝继承5.组合继承(原型链继承+构造函数继承)6.寄生组合式继承 JS继承的实现方式既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类function Animal (name) { // 属性 this.nam

JS中对象继承方式

JS对象继承方式 摘自<JavaScript的对象继承方式,有几种写法>,作者:peakedness 链接:https://my.oschina.net/u/3970421/blog/2872629 方式一:对象冒充 原理:构造函数使用this关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使Parent构造函数称为Children的方法,然后调用它.Children会收到Parent的构造函数中定义的属性和方法. *** //父类构造函数 var P