美文网首页
js 面向对象编程 - 单例模式

js 面向对象编程 - 单例模式

作者: 路上灵魂的自由者 | 来源:发表于2019-01-19 20:17 被阅读15次

// 面向对象编程(Object Oriented Programming)

/*

* 单例设计模式(Singleton Pattern)

* 1.表现形式

* var obj ={

*   xx: xxx,

*   ..

*  }

* 在单例设计模式中,OBJ不仅仅是对象名,他被称为”命名空间【NameSpace】“,把描述事务的属性存放到命名空间中,多个命名空间是独立分开的,互不冲突

* 2.作用

* =》把描述同一件事务的属性的特征进行”分组,归类“(存储在同一个堆内存空间中),因此避免了全局变量之间的冲突和污染

* var pattern1 = {name:'xxx'};

* var pattern2 = {name:'xxx'};

*

*

* 3.单例设计模式命名的由来

* =》每一个命名空间都是JS中OBJECT这个内置基类的实例,而实例之间 是相互独立互不干扰的,所以我们称他为"单例:单独的实例"

*/

/*

var name = "";

var age = 18;

var sex = 'box';

var name = "小龙女";

var age = 81;

var sex = "girl"

*/

/*

var person1 = {

name: '杨过',

age: 18

}

var person2 = {

name: '小龙女',

age: 81

}

*/

/*

* 高级单例模式

* 1.在给命名空间赋值的时候,不是直接赋值一个对象,而是先执行匿名函数,形成一个私有作用域AA(不销毁的栈内存),在AA中创建一个堆内存,把堆内存地址赋值给命名空间

* 2.这种模式的好处:我们完全可以在AA中创造很多内容(变量OR函数),哪些需要供外面调取使用,我们暴露到返回的对象(模块化实现的一种思想)

*/

/*

var nameSpace = (function(){

    var n = 12;

    function fn(){

        //...

    }

    function sum(){

        //...

    }

    return {

        fn: fn,

        sum: sum

    }

})()

*/

/*

*this

    1.给当前元素的某个事件绑定方法,当事件触发方法钟的THIS是当前操作的元素对象

        oBox.onclick = function(){

            // this: oBox

        }

    2. 普通函数执行,函数中的this取决于执行的主体,this就是谁(执行主体:方法执行,看方法名前面是否有”点“,有的话,点前面是谁this就是谁,没有this是window)。 自执行函数执行,方法中的this是window

        function fn(){

            console.log(1)

        }

        var obj = {aa:fn};

        obj.aa(); // this:obj 

        fn()      // this:window

         ~function (){

            //=> this:window 自执行函数执行,方法中的this是window

        }();

    3.

*/


### 面试题

var n = 2;

var obj = {

    n:3,

    fn:(function(n){

        n*=2;

        this.n+=2;  // window

        var n =5;

        return function(m){

            this.n*=2

            console.log(m+(++n));

        }

    })(n)

}

var fn = obj.fn;

fn(3)        //9

obj.fn(3);  //10

console.log(n,obj.n)  //8,6

相关文章

  • Node.js 设计模式笔记 —— 单例模式

    Singleton 单例(Singleton)模式是面向对象编程中最常见的设计模式之一,Node.js 已经有了很...

  • js 面向对象编程 - 单例模式

    // 面向对象编程(Object Oriented Programming) /* * 单例设计模式(Single...

  • 设计模式

    一 生成对象类(创建对象)01 单例模式02 工厂方法模式03 抽象工厂模式04 原型模式二 面向对象编程灵活化0...

  • ES6中的类的总结

    js常用的编程模式有面向过程编程和面向对象编程(1)面向过程编程“面向过程”(Procedure Oriented...

  • 单例模式

    面向对象设计的设计模式(四):单例模式

  • iOS开发中的单例模式

    简介 开发者应该经常看到单例模式这个设计模式,那什么是单例模式呢? 我们知道面向对象编程会生成很多实例,比如对于学...

  • 连工厂模式都不知道,别说你会设计模式

    设计模式文章陆续更新 java单例模式java代理模式java状态模式 在Java面向对象编程中,我们通常会new...

  • 这应该是全网最全的单例模式总结了吧,面试官都被我说懵了

    前言 单例模式是面向对象的编程语言23种设计模式之一,属于创建型设计模式。主要用于解决对象的频繁创建与销毁问题,因...

  • 设计模式导航

    简述面向对象编程(oop)的六大原则 【单例模式】最应该掌握的设计模式 【策略模式】分离算法的设计模式 组装复杂对...

  • 单例模式

    1. 单例模式 在面向对象的程序设计中, 单例模式是最简单的设计模式,这种类型的设计模式属于创建型模型,所谓单例....

网友评论

      本文标题:js 面向对象编程 - 单例模式

      本文链接:https://www.haomeiwen.com/subject/mfnzdqtx.html