美文网首页
JavaScript设计模式

JavaScript设计模式

作者: check_ping | 来源:发表于2017-05-07 19:21 被阅读0次

一、单例模式

单例模式是指一个实例对象的唯一性,既保持这个对象是唯一的,常见的有两种做法:第一种是给实例一个命名空间,以区分其他同类实例;第二种是如若此实例存在,则不再创建,不存在,则创建

比如说点击一个按钮,弹出一个弹窗,这样做就保证了永远只创建一个mask,并且会记录在浏览器内存中。每次向body中appendChild的都是同一个mask,并且不会append多个。

var showDialog = (function (){
    var mask = mask || document.createElement("div"); 
    // mask => <div></div>
    return function(){
        document.body.appendChild(mask);
    }
})();
btn.onclick = function(){
    showDialog ();
}

二、构造函数模式

通过一个构造函数(构造器)来创建实例,每个实例的拥有的属性相同,属性的值不同。

function Dog (name){
    if(!(this instanceof Dog)){
        return new Dog(name);
    }
    // 上面代码在下方解释
    var _name = name? name : '小花';
    this.name = _name;
    this.getName = function(){
        console.log(this.name);
    }
}
var dog1 = Dog();
dog1.getName();
var dog2 = Dog("小白");
dog2.getName();

为什么上面代码在构造器中return 一个实例,这是因为创建一个实例,如果使用new关键字,构造函数就要依次将方法赋给这个实例,会浪费性能;如果不用new关键字,这个对象将不能拥有构造函数中的方法,但是能拥有原型上的方法,这也是为什么一个构造函数的方法都要放在原型上,这样我们就不需要用new关键字了,从而节省了性能。

上面代码中,通过一个判断,这个实例是否是这个构造函数创建的,没有用new创建,则不能拥有这个构造函数的方法,但第二次创建实例将不再执行此代码,因为构造函数上的方法已被缓存在浏览器中,所以这也同样能起到节省性能的作用。

三、建造者模式

未完,待续......

相关文章

网友评论

      本文标题:JavaScript设计模式

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