Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var myFun = (function() {
- var called = false;
- return function() {
- if (!called) {
- console.log("I've been called");
- called = true;
- }
- }
- })()
- function callonce() {
- console.log("I've been called");
- arguments.callee = function() {};
- }
- function makeSingleCallFun(fun) {
- var called = false;
- return function() {
- if (!called) {
- fun.apply(this, arguments);
- }
- }
- }
- // Alternate implementation
- function makeSingleCallFun(fun) {
- return function() {
- fun.apply(this, arguments);
- arguments.callee = function() {};
- }
- }
- var myFun = makeSingleCallFun(function() {
- console.log("I've been called");
- });
- myFun(); // logs I've been called
- myFun(); // Does nothing
- // your function definition
- function yourFunction() {}
- // decorator
- function callItOnce(fn) {
- var called = false;
- return function() {
- if (!called) {
- called = true;
- return fn();
- }
- return;
- }
- }
- yourFunction(); // it runs
- yourFunction(); // it runs
- yourFunction = callItOnce(yourFunction);
- yourFunction(); // it runs
- yourFunction(); // null
- var myLibraryFunction = callItOnce(libraryFunction);
- myLibraryFunction(); // it runs
- myLibraryFunction(); // null
- libraryFunction(); // it runs
- var callMeOnlyOnce=function(){
- if(this.alreadyCalled)return;
- alert('calling for the first time');
- this.alreadyCalled=true;
- };
- // alert box comes
- callMeOnlyOnce();
- // no alert box
- callMeOnlyOnce();
- if(!window.mynamespace){
- window.mynamespace={};
- }
- mynamespace.callMeOnlyOnce=function(){
- if(mynamespace.alreadyCalled)return;
- alert('calling for the first time');
- mynamespace.alreadyCalled=true;
- };
- // alert box comes
- mynamespace.callMeOnlyOnce();
- // no alert box
- mynamespace.callMeOnlyOnce();
- var called = false;
- function blah() {
- called = true;
- }
- if ( !called ) {
- blah();
- }
- If (!your_func.called) {
- your_func.called = true;
- your_func();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement