Grundsätzlich zu tun haben Im ersten Beispiel deklarieren Sie eine object literal, die eigentlich schon eine Objektinstanz ist.
In Ihrem zweiten Beispiel definieren Sie eine Konstruktorfunktion, die mit dem Operator new
zum Erstellen von Objektinstanzen verwendet werden kann.
Objektliterale können auch verwendet werden, um neue Instanzen von Objekten zu erstellen und prototypische Vererbung zu machen, Douglas Crockford fördert auch diese Technik.
Grundsätzlich können Sie eine object
Betreiber haben:
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
Diese Hilfsfunktion kann auf eine sehr intuitive und bequeme Art und Weise verwendet werden.
Es erhält grundsätzlich ein Objekt als Parameter innerhalb der Funktion einer neue Objektinstanz erstellt wird, das alte Objekt ist auf das neue Objekt des Prototyp gekettet, und seine zurückgeführt.
Es kann wie folgt verwendet werden: können
var oldObject = {
firstMethod: function() { alert('first'); },
secondMethod: function() { alert('second'); },
};
var newObject = object(oldObject);
newObject.thirdMethod = function() { alert('third'); };
var otherObject = object(newObject);
otherObject.firstMethod();
Sie noch weiter gehen, wie Sie wollen, neue Instanzen von den Objekten zuvor definierten machen.
Empfehlung:
Dies ist auch eine gute Frage für mich, vielen Dank für die Buchung. –
In Bezug auf Ihre Frage in der Bearbeitung hängt es davon ab, was Sie tun möchten. Wenn Sie nur eine Kopie des Objekts haben, wählen Sie die erste Syntax. Wenn mehrere Kopien erstellt werden sollen (zB wenn 'Etwas' in anderen Sprachen '' Class' 'ist), wählen Sie die zweite Syntax (oder eine bearbeitete Version, in der Sie 'sayHi' im Konstruktor definieren mit' this.sayHi = function() {...} ', das ist die Norm). –