Heim Web-Frontend js-Tutorial Beispiele für sieben Möglichkeiten zum Erstellen von Objekten mit JavaScript

Beispiele für sieben Möglichkeiten zum Erstellen von Objekten mit JavaScript

Aug 22, 2017 am 11:24 AM
javascript js 对象

In diesem Artikel werden hauptsächlich die sieben Möglichkeiten zum Erstellen von Objekten im JavaScript-Factory-Modus, im Konstruktormodus usw. vorgestellt. Für spezifische Betriebsschritte können Sie sich die folgenden detaillierten Erläuterungen ansehen Interessierte Freunde, Sie können darauf verweisen.

Es gibt viele Möglichkeiten, Objekte in JavaScript zu erstellen. Sie können ein einzelnes Objekt auch über den Objektkonstruktor oder das Objektliteral erstellen. Offensichtlich generieren diese beiden Methoden viel wiederholten Code und sind nicht für die Massenproduktion geeignet . Als nächstes stellen wir sieben sehr klassische Methoden zum Erstellen von Objekten vor. Sie haben auch ihre eigenen Vor- und Nachteile

Fabrikmuster


function createPerson(name, job) {
 var o = new Object()
 o.name = name
 o.job = job
 o.sayName = function() {
  console.log(this.name)
 }
 return o
}
var person1 = createPerson(‘Jiang', ‘student')
var person2 = createPerson(‘X', ‘Doctor')
Nach dem Login kopieren

Diese Factory-Funktion kann unzählige Male aufgerufen werden und gibt jedes Mal ein Objekt zurück, das zwei Eigenschaften und eine Methode enthält

Obwohl das Factory-Muster das Problem der Erstellung mehrerer ähnlicher Objekte löst, Es löst das Objekterkennungsproblem nicht, das heißt, der Typ eines Objekts kann nicht bekannt sein

Konstruktormuster


function Person(name, job) {
 this.name = name
 this.job = job
 this.sayName = function() {
  console.log(this.name)
 }
}
var person1 = new Person(‘Jiang', ‘student')
var person2 = new Person(‘X', ‘Doctor')
Nach dem Login kopieren

Erstellen Sie ein Objekt ohne Anzeige. Nach der Verwendung von „New“ werden die folgenden Vorgänge automatisch ausgeführt:

Erstellen Sie ein neues Objekt.
Dieses neue Objekt wird angezeigt ausgeführter [[Prototyp]]-Link
Dieses neue Objekt wird im Funktionsaufruf daran gebunden
Dieses Objekt zurückgeben
Mit dieser Methode können Objekte erstellt werden, um den Objekttyp zu erkennen

Person1-Instanz von Objekt // wahr
Person1 Instanz von Person // wahr
Bei Verwendung von Konstruktoren zum Erstellen von Objekten wird jede Methode einmal für jede Instanz neu erstellt

Prototypmuster


function Person() {
}
Person.prototype.name = ‘Jiang'
Person.prototype.job = ‘student'
Person.prototype.sayName = function() {
 console.log(this.name)
}
var person1 = new Person()
Nach dem Login kopieren

Fügen Sie Informationen direkt zum Prototypobjekt hinzu. Der Vorteil der Verwendung eines Prototyps besteht darin, dass alle Instanzobjekte die darin enthaltenen Eigenschaften und Methoden gemeinsam nutzen können, ohne dass Objektinstanzinformationen im Konstruktor definiert werden müssen.

Prototyp ist ein sehr wichtiges Konzept, das ausführlich in einem Artikel zum Verständnis der Beziehung und des Unterschieds zwischen Prototyp und Prototyp erklärt wird

Einfachere Schreibweise


function Person() {
}
Person.prototype = {
 name: ‘jiang',
 job: ‘student',
 sayName: function() {
  console.log(this.name)
 }
}
var person1 = new Person()
Nach dem Login kopieren

Setzen Sie Person.prototype gleich einem Objekt, das in Form eines Objektliterals erstellt wurde. Dies führt jedoch dazu, dass .constructor nicht mehr auf Person zeigt.

Mit dieser Methode wird das Standardobjekt Person.prototype vollständig neu geschrieben, sodass der .constructor hier nicht vorhanden ist

Person.prototype.constructor === Person // false

Wenn dieses Attribut benötigt wird, Sie kann manuell hinzugefügt werden


function Person() {
}
Person.prototype = {
 constructor:Person
 name: ‘jiang',
 job: ‘student',
 sayName: function() {
  console.log(this.name)
 }
}
Nach dem Login kopieren
Diese Methode ist jedoch nicht gut genug. Wenn Sie es direkt festlegen, ist es nicht aufzählbar . Angehoben. Wenn Sie also die Möglichkeit haben, die Object.defineProperty-Methode


Object.defineProperty(Person.prototype, ‘constructor', {
 enumerable: false,
 value: Person
})
Nach dem Login kopieren

Nachteile

Prototypen zu verwenden, Alle Attribute werden gemeinsam genutzt, was ein großer Vorteil ist, aber auch einige Nachteile mit sich bringt

Alle Attributinstanzen im Prototyp werden von vielen Instanzen gemeinsam genutzt, und diese Art der Freigabe eignet sich sehr gut für Funktionen. Für Eigenschaften, die Grundwerte enthalten, ist dies kaum möglich. Schließlich können Instanzeigenschaften Prototypeigenschaften maskieren. Es treten jedoch Probleme auf, wenn Referenztypwerte


function Person() {
}
Person.prototype = {
 name: ‘jiang',
 friends: [‘Shelby', ‘Court']
}
var person1 = new Person()
var person2 = new Person()
person1.friends.push(‘Van')
console.log(person1.friends) //[“Shelby”, “Court”, “Van”]
console.log(person2.friends) //[“Shelby”, “Court”, “Van”]
console.log(person1.friends === person2.friends) // true
Nach dem Login kopieren
Freunde im Prototyp vorhanden sind, die Instanzen person1 und person2 auf denselben Prototyp verweisen und person1 das referenzierte Array ändert. Es wird sich auch in der Instanz person2 widerspiegeln

Verwenden Sie das Konstruktormuster und das Prototypmuster in Kombination

Dies ist das am weitesten verbreitete und anerkannteste 1. Eine Möglichkeit, einen benutzerdefinierten Typ zu erstellen. Es kann die Mängel der oben genannten Muster beheben.

Durch die Verwendung dieses Musters kann jede Instanz über eine eigene Kopie von Instanzattributen verfügen, aber gleichzeitig einen Verweis auf die Methode teilen.

In diesem Fall Selbst wenn ein Instanzattribut den Wert eines Referenztyps ändert, hat dies keinen Einfluss auf die Attributwerte anderer Instanzen


function Person(name) {
 this.name = name
 this.friends = [‘Shelby', ‘Court']
}
Person.prototype.sayName = function() {
 console.log(this.name)
}
var person1 = new Person()
var person2 = new Person()
person1.friends.push(‘Van')
console.log(person1.friends) //[“Shelby”, “Court”, “Van”]
console.log(person2.friends) // [“Shelby”, “Court”]
console.log(person1.friends === person2.friends) //false
Nach dem Login kopieren

Dynamischer Prototypmodus

Der dynamische Prototypmodus kapselt alle Informationen im Konstruktor. Während der Initialisierung bestimmt er, ob der Prototyp initialisiert werden muss, indem er erkennt, ob eine Methode, die vorhanden sein sollte, gültig ist


function Person(name, job) {
 // 属性
 this.name = name
 this.job = job
Nach dem Login kopieren


 // 方法
 if(typeof this.sayName !== ‘function') {
  Person.prototype.sayName = function() {
    console.log(this.name)
  }
 }

}
var person1 = new Person(‘Jiang', ‘Student')
person1.sayName()
Nach dem Login kopieren
Die sayName-Methode wird dem Prototyp nur hinzugefügt, wenn sie nicht vorhanden ist. Dieser Code wird nur beim ersten Aufruf des Konstruktors ausgeführt.

Der Prototyp wurde initialisiert und es sind keine Änderungen erforderlich.

Die hier am Prototyp vorgenommenen Änderungen können sofort in allen Fällen widergespiegelt werden.

Zweitens kann die Anweisung überprüft werden Eigenschaften oder Methoden, die nach der Initialisierung vorhanden sein sollten, sodass nicht viele if-Anweisungen verwendet werden müssen, um jede Eigenschaft und Methode zu überprüfen. Überprüfen Sie einfach ein

Parasite-Konstruktormuster

Die Grundidee dieses Musters besteht darin, eine Funktion zu erstellen, die nur den Code kapselt, der das Objekt erstellt, und dann das neu erstellte Objekt zurückgibt


function Person(name, job) {
 var o = new Object()
 o.name = name
 o.job = job
 o.sayName = function() {
  console.log(this.name)
 }
 return o
}
var person1 = new Person(‘Jiang', ‘student')
person1.sayName()
Nach dem Login kopieren

这个模式,除了使用new操作符并把使用的包装函数叫做构造函数之外,和工厂模式几乎一样

构造函数如果不返回对象,默认也会返回一个新的对象,通过在构造函数的末尾添加一个return语句,可以重写调用构造函数时返回的值

稳妥构造函数模式

首先明白稳妥对象指的是没有公共属性,而且其方法也不引用this。

稳妥对象最适合在一些安全环境中(这些环境会禁止使用this和new),或防止数据被其他应用程序改动时使用

稳妥构造函数模式和寄生模式类似,有两点不同:一是创建对象的实例方法不引用this,而是不使用new操作符调用构造函数


function Person(name, job) {
 var o = new Object()
 o.name = name
 o.job = job
 o.sayName = function() {
  console.log(name)
 }
 return o
}
var person1 = Person(‘Jiang', ‘student')
person1.sayName()
Nach dem Login kopieren

和寄生构造函数模式一样,这样创建出来的对象与构造函数之间没有什么关系,instanceof操作符对他们没有意义

Das obige ist der detaillierte Inhalt vonBeispiele für sieben Möglichkeiten zum Erstellen von Objekten mit JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Empfohlen: Ausgezeichnetes JS-Open-Source-Projekt zur Gesichtserkennung und -erkennung Apr 03, 2024 am 11:55 AM

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen PHP- und JS-Entwicklungstipps: Beherrschen Sie die Methode zum Zeichnen von Aktienkerzendiagrammen Dec 18, 2023 pm 03:39 PM

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

Wie konvertiere ich ein MySQL-Abfrageergebnisarray in ein Objekt? Wie konvertiere ich ein MySQL-Abfrageergebnisarray in ein Objekt? Apr 29, 2024 pm 01:09 PM

So konvertieren Sie ein MySQL-Abfrageergebnis-Array in ein Objekt: Erstellen Sie ein leeres Objekt-Array. Durchlaufen Sie das resultierende Array und erstellen Sie für jede Zeile ein neues Objekt. Verwenden Sie eine foreach-Schleife, um die Schlüssel-Wert-Paare jeder Zeile den entsprechenden Eigenschaften des neuen Objekts zuzuweisen. Fügt dem Objektarray ein neues Objekt hinzu. Schließen Sie die Datenbankverbindung.

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Was ist das Request-Objekt in PHP? Was ist das Request-Objekt in PHP? Feb 27, 2024 pm 09:06 PM

Das Request-Objekt in PHP ist ein Objekt, das zur Verarbeitung von HTTP-Anfragen verwendet wird, die vom Client an den Server gesendet werden. Über das Request-Objekt können wir die Anforderungsinformationen des Clients abrufen, z. B. die Anforderungsmethode, die Anforderungsheaderinformationen, die Anforderungsparameter usw., um die Anforderung zu verarbeiten und zu beantworten. In PHP können Sie globale Variablen wie $_REQUEST, $_GET, $_POST usw. verwenden, um angeforderte Informationen zu erhalten, aber diese Variablen sind keine Objekte, sondern Arrays. Um Anfrageinformationen flexibler und bequemer bearbeiten zu können, können Sie dies tun

Was ist der Unterschied zwischen Arrays und Objekten in PHP? Was ist der Unterschied zwischen Arrays und Objekten in PHP? Apr 29, 2024 pm 02:39 PM

In PHP ist ein Array eine geordnete Sequenz, und auf Elemente wird über einen Index zugegriffen. Ein Objekt ist eine Entität mit Eigenschaften und Methoden, die über das Schlüsselwort new erstellt werden. Der Array-Zugriff erfolgt über einen Index, der Objektzugriff über Eigenschaften/Methoden. Es werden Array-Werte und Objektreferenzen übergeben.

Die Beziehung zwischen js und vue Die Beziehung zwischen js und vue Mar 11, 2024 pm 05:21 PM

Die Beziehung zwischen js und vue: 1. JS als Eckpfeiler der Webentwicklung; 2. Der Aufstieg von Vue.js als Front-End-Framework; 3. Die komplementäre Beziehung zwischen JS und Vue; Vue.

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

See all articles