Skip to content

Instantly share code, notes, and snippets.

@lushijie
Created February 18, 2016 03:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lushijie/86b9e13c81e064e7988f to your computer and use it in GitHub Desktop.
Save lushijie/86b9e13c81e064e7988f to your computer and use it in GitHub Desktop.
程序多次运行共享一个状态
function shareFunc(func){
//初始化函数运行过程中依赖的变量
//之前一般的方式是声明全局变量,程序的阅读与理解难度增加,全局变量容易受干扰
var varWraper ={
a:0
}
return function(){
var args = [].slice.apply(arguments);
args.push(varWraper);
var ret = func.apply(this,args);
return ret;
}
}
function abc(){
var args = [].slice.apply(arguments);
args[args.length-1].a++;
return args[args.length-1].a;
}
var abcShare = shareFunc(abc);
console.log(abcShare(123));//1
console.log(abcShare(123));//2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment