JavaScript-Funktion mit Objekt als Argument
Mann kennst es ja aus verschiedenen jQuery-Plugins. Argumente werden als Objekt in entsprechender Notation an eine Funktion übergeben und überschreiben dabei Default-Werte. Das ist schick und hat einige Vorteile:
- jedes Argument bekommt einen Namen und ist damit selbsterklärend
- die Reihenfolge ist dabei vollkommen egal genauso wie, das Auslassen von Argumenten
- sieht schick aus und ist einfach zu pflegen
Wie macht man das nun für eigene framework-unabhängige Funktionen. Ungefähr so:
var welcome = function(options) { // default settings var defaults = { 'name' : 'World', 'greeting' : 'Hello' }; // set options var o = {}; if (typeof options !== 'undefined') { o = options; } for (var i in defaults) { if (typeof o[i] === 'undefined') { o[i] = defaults[i]; } } // your function logic var text = o.greeting + ', ' + o.name + '!'; console.log(text); }
welcome({'name': 'Tommy'}); // Hello, Tommy!
welcome({ 'name': 'Tommy', 'greeting': 'Hi' } // Hi, Tommy!
Ich führe hier noch eine zusätzliche Variable o
ein und kopiere das options
-Objekt hinein. Das braucht es normalerweise nicht. Ich finde es nur schick, wenn man sieht, was in der Funktion namentlich übergeben wird (nämlich Optionen options
) und im Nachhinein kürze ich das nur zu o
ab. So muss ich nicht jedes mal options
ausschreiben.