Heim >Web-Frontend >js-Tutorial >Welche Modi gibt es zum Erstellen von Objekten?
Erstellen Sie zuerst eine Objektinstanz und fügen Sie ihr dann Eigenschaften und Methoden hinzu
var Person = new Object() Person.name = 'hl' Person.sayName = function () { console.log(this.name) }
Objektliteral Dies Die Methode ist die schnellste und bequemste Methode zum Erstellen von Objekten und wird in vielen Szenarien verwendet.
var Person = { name: 'hl', sayName: function () { console.log(this.name) } }
Der Nachteil der Objektliteralmethode besteht darin, dass beim Erstellen mehrerer Objekte desselben Typs viel doppelter Code generiert wird, daher das Factory-Muster.
Factory-Muster verwendet Funktionen, um die Details der Objekterstellung zu kapseln. Übergeben Sie beim Aufruf der Funktion die Objekteigenschaften und geben Sie dann ein Objekt zurück.
function createPerson (name) { return { name: name, sayName: function () { console.log(this.name) } } } var person = createPerson('hl') var person = new createPerson('hl') // 寄生构造函数模式
Das gleiche Ergebnis kann auch durch die Verwendung des neuen Operators erzielt werden. Diese Methode wird als parasitäres Konstruktormuster bezeichnet und sollte sich nicht vom direkten Aufruf der Funktion unterscheiden.
Obwohl das Factory-Muster das Problem der Erstellung mehrerer Objekte desselben Typs löst, kann es den spezifischen Typ des Objekts nicht identifizieren.
Für Objekte, die über den Konstruktor erstellt wurden, kann der Operator „instanceof“ verwendet werden, um den Typ des Objekts zu bestimmen. Gemäß der Programmierkonvention sollten Konstruktornamen großgeschrieben werden, um sie von gewöhnlichen Funktionen zu unterscheiden.
function Person (name) { this.name = name this.sayName = function () { console.log(this.name) } } p = new Person('hl') p instanceof Person // true
Eigenschaften des Konstruktors:
Keine erstellten Objekte angezeigt
Attribute und Methoden sind diesem direkt zugeordnet
Es gibt keine Rückgabeanweisung
Verwenden Sie den neuen Operator, um ein Objekt zu erstellen
Die Der Nachteil des Konstruktors besteht darin, dass jede Methode in jeder Instanz neu erstellt wird, was zu einer Speicherverschwendung führt.
Mit dem Prototypmuster können Sie Objekten ganz einfach Eigenschaften und Methoden hinzufügen.
function Person () { } var p = new Person() Person.prototype.name = 'hl' Person.prototype.sayName = function () { console.log(this.name) } p.sayName() // hl
Der Prototyp ist dynamisch, das heißt, zuerst wird das Objekt erstellt und dann der Prototyp geändert, und die Instanz kann auch die entsprechenden Eigenschaften und Methoden erhalten.
Der Prototypmodus ist nicht ohne Mängel. Erstens kann der Prototypmodus keine Initialisierungsparameter übergeben, sodass jede Instanz dieselben Eigenschaften erhält. Zweitens verweisen alle Instanzen auf dasselbe Objekt, siehe Beispiel unten:
function Person () { } Person.prototype.relative = ['father','mother'] var person1 = new Person() var person2 = new Person() person1.relative.push('sister') console.log(person2.relative) // [ 'father', 'mother', 'sister' ]
Ändern Sie die Attribute von Person1, und die Attribute von Person2 werden ebenfalls geändert. Instanzen müssen im Allgemeinen über eigene Eigenschaften verfügen, daher wird das Prototypmuster selten allein verwendet.
Die gebräuchlichste Methode zum Erstellen von Objekten besteht darin, das Konstruktormuster und das Prototypmuster in Kombination zu verwenden. Konstruktoren werden für benutzerdefinierte Eigenschaften verwendet und Prototypmuster werden zum Definieren gemeinsamer Eigenschaften und Methoden verwendet.
function Person (name) { this.name = name } Person.prototype.sayName = function () { console.log(this.name) }
Prototypen können im Konstruktor initialisiert werden, um den Objekterstellungsprozess besser zu kapseln.
function Person(name) { this.name = name if (typeof this.sayName !== 'function') { Person.prototype.setName= function (name) { this.name = name } Person.prototype.sayName = function () { console.log(this.name) } } }
Sie müssen nicht if verwenden, um jede Eigenschaft oder Methode zu überprüfen, Sie müssen nur eine der Eigenschaften oder Methoden überprüfen, die nach der Initialisierung des Prototyps vorhanden sein sollten.
Ein sicheres Objekt bedeutet, dass es keine öffentlichen Eigenschaften hat, seine Eigenschaften und Methoden nicht auf dieses Objekt verweisen und der neue Operator nicht zum Erstellen von Objekten verwendet wird. Geeignet für den Einsatz in einigen Umgebungen, in denen Sicherheit erforderlich ist, um zu verhindern, dass Daten geändert werden.
function Person (name) { return { sayName: function () { console.log(name) } } } var person = Person('hl')
Im abgesicherten Modus erstellte Objekte haben keine Möglichkeit, die an den Konstruktor übergebenen Originaldaten zu ändern oder darauf zuzugreifen, außer mit den im Konstruktor definierten Methoden.
Das obige ist der detaillierte Inhalt vonWelche Modi gibt es zum Erstellen von Objekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!