Elefantast: Wie bezeichnet man diese Methoden?

Beitrag lesen

Hallo Leser,

vor einiger Zeit bin ich auf 2 Arten von Methoden gestoßen, über die ich mich nun gern weiter informieren möchte. Jedoch habe ich vergessen wie man diese bezeichnet.

Ein Codebeispiel sagt mehr als tausend Worte…

  
(function ( window, undefined ) {  
  
var document = window.document,  
    Person = function ( eigenschaften ) {  
        return new Person.fn.initialize( eigenschaften );  
    };  
  
    Person.fn = Person.prototype = {  
        alter: null,  
        geschlecht: null,  
  
        initialize: function ( eigenschaften ) {  
            var key;  
  
            if ( eigenschaften ) {  
                for ( key in eigenschaften ) {  
                    this[ key ] = eigenschaften[ key ];  
                }  
            }  
  
            return this;  
        },  
  
        gruss: function ( name ) {  
            var text;  
  
            if ( this.geschlecht === "mann" ) {  
                text = ( this.alter > 18 ? "Guten Tag " + name : "Ey, " + name + ", alter!");  
            } else {  
                text = ( this.alter > 18 ? "Hallo " + name : "Huhu " + name + "!" );  
            }  
  
            alert( text );  
            Person.niessen();  
  
            return this;  
        }  
    };  
  
    Person.niessen = function () {  
        alert( "Hatschi!" );  
    }  
  
    // Aufruf der Methoden:  
    var Stefan = Person({  
            alter: 42,  
            geschlecht: "mann"  
        });  
  
    Stefan.gruss( "Christian" ); // -> Guten Tag, Christian!  
    Person.niessen(); // -> Hatschi!  
  
    Stefan.niessen(); // -> Uncaught TypeError: Object [object Object] has no method 'niessen'  
    Person.gruss(); // -> Uncaught TypeError: Object [object Object] has no method 'gruss'  
})( this );  

Es geht mir dabei im speziellen um die Methoden Person.fn.gruss und Person.niessen.
Während erstere nur über eine Instanz des Person-Objektes aufgerufen werden kann
und dabei sowohl auf dessen Eigenschaften als auch auf “äußere” Methoden wie im Falle des Beispiels auf
Person.niessen Zugriff hat, fungiert letztere eher als eine Art
public static function einer Klasse wie ich sie aus PHP kenne.

Ich würde mich über Suchbegriffe und weiterführende Literatur (englisch bevorzugt) sehr freuen.

Mit freundlichen Grüßen,
Elefantast
--
Alles was nicht mit Elefanten zu tun hat ist Irrelefant.