zwei Optionen:
Statische Variablen Hier ist, wie statisch zu schaffen (wie in C) Variablen selbst Funktionen aufrufen mit Ihrer statischen Variablen in einem Verschluss zu speichern.
var myFun = (function() {
var called = false;
return function() {
if (!called) {
console.log("I've been called");
called = true;
}
}
})()
Leer Funktion Ersatz die Funktion auf eine leere Funktion gesetzt, nachdem es ausgeführt wird.
function callonce() {
console.log("I've been called");
arguments.callee = function() {};
}
Zusammenfassung der Idee Hier ist eine Funktion, die eine Funktion gibt, die nur einmal aufgerufen wird, so müssen wir über das Hinzufügen zu jeder Funktion Kesselblech Code keine Sorge.
function makeSingleCallFun(fun) {
var called = false;
return function() {
if (!called) {
called = true;
return fun.apply(this, arguments);
}
}
}
// Alternate implementation
function makeSingleCallFun(fun) {
return function() {
return 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
möglich Duplikat [Wie Sie die CLIP-Funktion in JavaScript herauszufinden tun?] (Http://stackoverflow.com/questions/280389/how-do-you-find-out-the-caller-function -in-javascript) – Ralgha