**我们一起,每天进步一点。日积月累,有朝一日定会,厚积薄发。**
(三)不可不说的JS重点知识~递归和尾递归(测试小姐姐专题)
(五)javaScript重点知识~~~单例模式(测试小姐姐专题)
为了让小姐姐的心里只有我,不受其他小哥哥的干扰。我们想到了采用闭包的思想,采取了很多措施。但是闭包有一个特性:可以new 出好多对象(小哥哥),每个对象都有自己的内存地址。具体来说,就是这些小哥哥都会在测试小姐姐的心里占据一定的位置。
怎么才能在测试小姐姐的心里(内存中),new 出来的对象 始终不变呢?让小姐姐每次想到的只有我一个人。这时,我想到了单例模式,让小姐姐的心里(内存)new对象的时候,先判断一下,我在她心里是最合适最喜欢的人。然后她就不会new其他的对象了。
一.认识一下单例模式
单利模式:单例就是保证一个类只有一个实例。总而言之就是:在小姐姐的心里有一个男朋友类,这个类new 出来的对象只能是我。
二.使用场景
购物车(和登录框类似)
温馨提示框(loading加载)
......
三.编码实践
1.写法one
let createLoginWindow = function(title)
{
this.title= title; this.init();
}
createLoginWindow.prototype.init = function() {
// some code
}
let proxySingleton = (function() {
var instance; return function(title) {
if (!instance) {
instance = new createLoginWindow(title);
} return instance;
}})();
let boyFriend_01 = new proxySingleton('和小哥哥逛街');let boyFriend_02 = new proxySingleton('和小哥哥吃饭');console.log(boyFriend_01 === boyFriend_02); // true
2.写法two
const log = console.log;
let Xiaojiejie = (()=>{
let _instance = null;
//一个待实例化的类
function _module(){
this.name = '张三丰小哥哥';
this.callLeader = ()=>{
return 'The Leader Is ' + this.name;
}
this.setLeader = (name) => {
this.name = name;
}
}
return {
getInstance:()=>{
if(!_instance){
_instance = new _module();
}
return _instance;
}
}
})();
let boyFriend_01 = Xiaojiejie.getInstance();
leader_01.setLeader('hhh');
let boyFriend_02 = Xiaojiejie.getInstance();log(boyFriend_02.callLeader())
log(boyFriend_01 === boyFriend_02); //true
真是数风流人物还看今朝。为了追测试小姐姐,我使用了“节流”、“防抖”、“递归”、“闭包”等编程思维,并把这些思想运用到现实生活中。
最后,通过使用单例模式,和测试小姐姐忠终成眷属。
《沁园春·把我身心》
把我身心,为伊烦恼,算天便知。
恨一回相见,百方作计,未能偎倚,早觅东西。
镜里拈花,水中捉月,觑著无由得近伊。
添憔悴,镇花销翠减,玉瘦香肌。
奴儿。又有行期。
你去即无妨我共谁。
向眼前常见,心犹未足,怎生禁得,真个分离。
地角天涯,我随君去。
掘井为盟无改移。
君须是,做些儿相度,莫待临时。