Advertisement
Guest User

Untitled

a guest
Jul 24th, 2016
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. var myFun = (function() {
  2. var called = false;
  3. return function() {
  4. if (!called) {
  5. console.log("I've been called");
  6. called = true;
  7. }
  8. }
  9. })()
  10.  
  11. function callonce() {
  12. console.log("I've been called");
  13. arguments.callee = function() {};
  14. }
  15.  
  16. function makeSingleCallFun(fun) {
  17. var called = false;
  18. return function() {
  19. if (!called) {
  20. fun.apply(this, arguments);
  21. }
  22. }
  23. }
  24.  
  25. // Alternate implementation
  26. function makeSingleCallFun(fun) {
  27. return function() {
  28. fun.apply(this, arguments);
  29. arguments.callee = function() {};
  30. }
  31. }
  32.  
  33. var myFun = makeSingleCallFun(function() {
  34. console.log("I've been called");
  35. });
  36. myFun(); // logs I've been called
  37. myFun(); // Does nothing
  38.  
  39. // your function definition
  40. function yourFunction() {}
  41.  
  42. // decorator
  43. function callItOnce(fn) {
  44. var called = false;
  45. return function() {
  46. if (!called) {
  47. called = true;
  48. return fn();
  49. }
  50. return;
  51. }
  52. }
  53.  
  54. yourFunction(); // it runs
  55. yourFunction(); // it runs
  56. yourFunction = callItOnce(yourFunction);
  57. yourFunction(); // it runs
  58. yourFunction(); // null
  59.  
  60. var myLibraryFunction = callItOnce(libraryFunction);
  61. myLibraryFunction(); // it runs
  62. myLibraryFunction(); // null
  63. libraryFunction(); // it runs
  64.  
  65. var callMeOnlyOnce=function(){
  66.  
  67. if(this.alreadyCalled)return;
  68.  
  69. alert('calling for the first time');
  70.  
  71. this.alreadyCalled=true;
  72. };
  73.  
  74. // alert box comes
  75. callMeOnlyOnce();
  76.  
  77.  
  78. // no alert box
  79. callMeOnlyOnce();
  80.  
  81. if(!window.mynamespace){
  82. window.mynamespace={};
  83. }
  84.  
  85. mynamespace.callMeOnlyOnce=function(){
  86.  
  87. if(mynamespace.alreadyCalled)return;
  88.  
  89. alert('calling for the first time');
  90. mynamespace.alreadyCalled=true;
  91. };
  92.  
  93. // alert box comes
  94. mynamespace.callMeOnlyOnce();
  95.  
  96.  
  97. // no alert box
  98. mynamespace.callMeOnlyOnce();
  99.  
  100. var called = false;
  101. function blah() {
  102. called = true;
  103. }
  104.  
  105. if ( !called ) {
  106. blah();
  107. }
  108.  
  109. If (!your_func.called) {
  110. your_func.called = true;
  111. your_func();
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement