3 Stimmen

Was ist der Unterschied zwischen dem direkten Hinzufügen einer Methode zu einem JavaScript-Konstruktor und dem Hinzufügen einer Methode über einen Prototyp?

Ich verwende das JavaScript von John Resig Klassendefinitionsstil . Nachstehend finden Sie eine Beispielklasse.

var Person = Class.extend({
  init: function(isDancing){
    this.dancing = isDancing;
  },
  dance: function(){
    return this.dancing;
  }
});

Eine andere Möglichkeit, die Tanzmethode zu definieren, wäre:

Person.prototype.dance = function(){
   return this.dancing;
};

Ich verwende gerne die erste Methode, aber jemand hat mich darauf hingewiesen, dass sie ineffizient ist. Was ist der Unterschied zwischen den beiden Methoden?

0voto

Cracker Punkte 1760

Ich habe die Lösung gerade selbst herausgefunden.

Die Funktion extend von John Resig erstellt automatisch einen Konstruktor aus dem als Argument übergebenen Objekt. Im ersten Fall würde die Tanzmethode im Objekt automatisch dem Prototyp des zurückgegebenen Objekts zugewiesen werden. Das bedeutet, dass der zurückgegebene Konstruktor (Klasse) in der Tat den 2. Die Verwendung des 2. Stils ist also unnötig.

Bei Verwendung des Codes von John Resig ist der erste Weg also NICHT ineffizient.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X