设计模式之单例模式
//单例模式
function Dan(fn){
var res = null;
return function(){
return res || (res = fn());
}
}
function Fun(opt = {}){
return {
data:opt,
get:function(){
return this.data;
},
set:function(objs){
//需要遍历的是data,
let obj = JSON.parse(JSON.stringify(objs));
var key = Object.keys(obj);
traverse(this.data);
function traverse(object){
//一开始是空对象
if(Object.keys(object).length < 1){
this.data = obj;
console.log(obj);
return;
}
//如果有相同的键更新,如果没有添加
for(k in object){
for(var i=0 ; i<key.length ; i++){
if(key[i] == k){
object[k] = obj.key;
}else{
object[k] = obj.key;
}
}
traverse(object[k]);
}
}
},
Add: function(){
let arr = [...arguments] || null;
let arr2 = null;
let sum = 0;
function count(){
arr2 = [...arguments];
for(var i = 0; i < arr.length; i++){
if(typeof arr[i] === "number"){
sum += arr[i];
}
}
for(var i = 0; i < arr2.length; i++){
if(typeof arr2[i] === "number")
sum += arr2[i]
}
return count;
}
count.get = function (){
return sum || 0;
}
count.clear = function (){
arr = null;
arr2 = null;
sum = 0;
}
return count;
},
clearAll:function(){
res = null;
}
}
}
let result = Dan(Fun)();
result.set({"name":"王一","age":20});
console.log(result);