2016-11-02 2 views
0

Ich versuche das Konzept des Prototyping in JS zu verstehen. Ich habe das folgende Beispiel gefunden. Ich habe mich gefragt, ob die Funktion außerhalb des Objekts deklariert ist. Hilft es Ressourcen zu sparen?Warum Funktionen außerhalb von Objekten platzieren?

JS

function Animal (name) { 
    this.name = name; 
    } 
Animal.prototype.speak = function() { 
    console.log(this.name + ' makes a noise.'); 
} 
+1

Es hat nicht mit Leistung oder "Ressourcen zu sparen" zu tun. Dieses Beispiel zeigt, dass Sie eine Methode der Tierklasse mithilfe eines Prototyps hinzufügen können. Relevant: http://sporto.github.io/blog/2013/02/22/a-plain-english-guide-to-javascript-prototypes/ –

+2

Ich denke, dass es, weil Sie es einmal statt für jede Instanz deklarieren von Tier. –

+0

Sie setzen keine "Funktionen außerhalb von Objekten". Es wäre genauer zu sagen, dass Sie "Prototyp-Methodendefinitionen außerhalb des Konstruktors" setzen. –

Antwort

0

Wenn Sie eine Funktion als eine Klasse in Javascript verwenden. Normalerweise werden String- oder Zahlen- oder andere primitive Eigenschaften innerhalb der Funktion initialisiert. und Methoden gehen in den Prototyp (das hilft, Ressourcen zu sparen :)). Genau wie Ihr Beispielcode.

Es gibt andere Wege, um das gleiche "klassische Verhalten" zu erreichen, aber die Verwendung von Prototypen ist die grundlegendste Methode.

0

Ja, es tut. Wenn Sie die Methode innerhalb des Objektkonstruktors (Animal) deklarieren, wird sie bei jeder Instanziierung eines Objekts in den Speicher geschrieben. Wenn Sie jedoch eine Prototypeigenschaft haben, wird jede Instanz von Anim diese Methode gemeinsam verwenden und nur einmal in den Speicher geschrieben.

+0

Was in den allermeisten Fällen überhaupt keine Rolle spielt und es dir erlauben würde, "private" Variablen zu verwenden, die innerhalb des Konstruktors deklariert sind. –

+0

können Sie mir eine Quelle dafür geben @ torazaburo – user2952265

+0

Eine Quelle für welchen Teil? –

Verwandte Themen