//方法一:
function runOnce1(fn, context) {
return function(){
try{
fn.apply(context || this, arguments);
}catch (err){
console.log('error=',err);
}finally{
fn = null;
}
}
}
// 方法二:
function runOnce2(fn, context) {
var result;
return function(){
if(fn) {
result = fn.apply(context || this, arguments);
fn = null;
}
return result;
};
}
var name = 'James';
var getPlayer1 = runOnce1(function() {
console.log('name=',this.name);
});
getPlayer1();//"name=James"
getPlayer1();//error= TypeError: Cannot read property 'apply' of null(…)
getPlayer1();//error= TypeError: Cannot read property 'apply' of null(…)
var obj = {name:'小明'};
var getPlayer2 = runOnce2(function(){
console.log('name=',this.name);
}, obj);
getPlayer2();//"name=小明";
getPlayer2();//控制台啥也不会输出滴^^
本例学习自css88.com
原文出处
【学习收藏】如何创建只执行一次的工具函数
最新推荐文章于 2022-11-02 20:57:26 发布