2017-07-08 4 views
0
var sing = function(name) { 
    console.log(name + " is SINGING"); 
} 

var cry = function(name) { 
    console.log(name + " is CRYING"); 
} 

var list = [sing, cry]; 

for(var func of list) { 
    func('foo'); 
} 

Dies ist genau das, was ich in meinem Code will. Aber ich bin mir nicht sicher, ob es eine gute Übung ist.Speichern von Funktionen im Array. Ist es eine gute Übung?

Antwort

0
var functionName = function(name, action) { 
console.log(name + " is "+ action); 
} 
functionName("Aditya", "Programing"); 

Aditya, ich denke, Sie dieses Format wählen sollte. Es ist immer gut, eine einzige Funktion für ähnliche Aufgaben zu behalten.

0

Ja, in einigen Situationen ist es das bevorzugte Design, um Funktionen in einem Array zu speichern.

Stellen Sie sich die folgende EventEmitter Klasse vor. Sie können Ereignis-Listener mit einer Methode namens on registrieren und ein Ereignis mithilfe von emit senden. Die Funktionen werden in einem Array gespeichert:

var EventEmitter = function() { 
 
    this._events = {}; 
 
}; 
 

 
EventEmitter.prototype.on = function (event, listener) { 
 
    if (!this._events.hasOwnProperty(event)) { 
 
    this._events[event] = []; // stores the listeners bound to the event's name 
 
    } 
 
    this._events[event].push(listener); // add the listener to the event's listeners array 
 
}; 
 

 
EventEmitter.prototype.emit = function (event) { 
 
    var args = Array.slice(arguments, 1); 
 
    if (this._events.hasOwnProperty(event)) { 
 
    this._events[event].forEach(function (listener) { 
 
     listener.apply(null, args); 
 
    }); 
 
    } 
 
} 
 

 
var emitter = new EventEmitter(); 
 

 
// push the first function to the array 
 
emitter.on('event-a', function (data) { 
 
    console.log('Event A was fired!'); 
 
}); 
 

 
// push the second function to the array 
 
emitter.on('event-a', function (data) { 
 
    console.log('Second listener to event A'); 
 
}); 
 

 
emitter.on('event-b', function (a, b, c) { 
 
    console.log('Event B:', a + b + c); 
 
}); 
 

 
emitter.emit('event-a'); 
 
setTimeout(function() { 
 
    emitter.emit('event-b', 2, 3, 4); 
 
}, 1500);

diesem Grund habe ich es in einigen Situationen verwenden würde. Ich halte es nicht für eine schlechte Übung.

Verwandte Themen