Heim >Web-Frontend >Front-End-Fragen und Antworten >Was ist ein JavaScript-Konstruktor?
In JavaScript ist ein Konstruktor eine spezielle Funktion, die zum Initialisieren eines neuen Objekts verwendet wird, nachdem sein Speicher zugewiesen wurde. Der Objektkonstruktor wird zum Erstellen eines speziellen Objekttyps verwendet. Wenn das Objekt zum ersten Mal erstellt wird, werden ihm Parameter übergeben Wird verwendet, um Elementeigenschaften und -methoden Werte zuzuweisen.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Was ist ein JavaScript-Konstruktor?
In der objektorientierten Programmierung ist ein Konstruktor eine spezielle Funktion, die zum Initialisieren eines neu erstellten Objekts verwendet wird, nachdem der Speicher des Objekts zugewiesen wurde. In JavaScript ist alles ein Objekt. Der Objektkonstruktor wird zum Erstellen eines speziellen Objekttyps verwendet. Erstens bereitet er das zu verwendende Objekt vor. Zweitens empfängt er beim ersten Erstellen des Objekts Parameter, um den Mitgliedseigenschaften und -methoden Werte zuzuweisen.
Objekterstellung
Drei grundlegende Möglichkeiten zum Erstellen von Objekten:
var newObject = {}; // or var newObject = Object.create( null ); // or var newObject = new Object();
Wenn der Objektkonstruktor einen Objektwrapper für einen bestimmten Wert erstellt oder kein Wert übergeben wird, erstellt er ein leeres Objekt und gibt es zurück.
Vier Möglichkeiten, einem Objekt ein Schlüssel-Wert-Paar zuzuweisen:
// ECMAScript 3 兼容形式 // 1. “点号”法 // 设置属性 newObject.someKey = "Hello World"; // 获取属性 var key = newObject.someKey; // 2. “方括号”法 // 设置属性 newObject["someKey"] = "Hello World"; // 获取属性 var key = newObject["someKey"]; // ECMAScript 5 仅兼容性形式 // For more information see: http://kangax.github.com/es5-compat-table/ // 3. Object.defineProperty方式 // 设置属性 Object.defineProperty( newObject, "someKey", { value: "for more control of the property's behavior", writable: true, enumerable: true, configurable: true }); // 如果上面的方式你感到难以阅读,可以简短的写成下面这样: var defineProp = function ( obj, key, value ){ var config = { value } Object.defineProperty( obj, key, config ); }; // 为了使用它,我们要创建一个“person”对象 var person = Object.create( null ); // 用属性构造对象 defineProp( person, "car", "Delorean" ); defineProp( person, "dateOfBirth", "1981" ); defineProp( person, "hasBeard", false ); // 还可以创建一个继承于Person的赛车司机 var driver = Object.create( person ); // 设置司机的属性 defineProp(driver, "topSpeed", "100mph"); // 获取继承的属性 (1981) console.log( driver.dateOfBirth ); // 获取我们设置的属性 (100mph) console.log( driver.topSpeed ); // 4. Object.defineProperties方式 // 设置属性 Object.defineProperties( newObject, { "someKey": { value: "Hello World", writable: true }, "anotherKey": { value: "Foo bar", writable: false } }); // 3和4中的读取属行可用1和2中的任意一种
Basiskonstruktor
Wie wir bereits gesehen haben, unterstützt JavaScript nicht das Konzept von Klassen, verfügt aber über eine Konstruktorfunktion für die Arbeit mit Objekten. Wenn wir diese Funktion mit dem Schlüsselwort new aufrufen, können wir JavaScript anweisen, diese Funktion als Konstruktor zu verwenden, der ein Objekt mit seinen eigenen definierten Mitgliedern initialisieren kann.
In diesem Konstruktor bezieht sich das Schlüsselwort this auf das gerade erstellte Objekt. Zurück zur Objekterstellung sieht ein grundlegender Konstruktor so aus:
function Car( model, year, miles ) { this.model = model; this.year = year; this.miles = miles; this.toString = function () { return this.model + " has done " + this.miles + " miles"; }; } // 使用: // 我们可以实例化一个Car var civic = new Car( "Honda Civic", 2009, 20000 ); var mondeo = new Car( "Ford Mondeo", 2010, 5000 ); // 打开浏览器控制台查看这些对象toString()方法的输出值 console.log( civic.toString() ); console.log( mondeo.toString() );
Das Obige ist eine einfache Version des Konstruktormusters, weist jedoch zwei Probleme auf:
Es ist schwierig zu erben
In den von jedem Autokonstrukteur erstellten Objekten Funktionen wie toString() wurden neu definiert
Das ist nicht sehr gut, die ideale Situation ist, dass alle Objekte vom Typ Auto auf dieselbe Funktion verweisen sollten
Verwenden Sie den „Prototyp“-Konstruktor
In Funktionen in JavaScript haben ein Prototypattribut . Wenn wir den JavaScript-Konstruktor aufrufen, um ein Objekt zu erstellen, kann auf die Eigenschaften des Konstruktor-Prototyps zugegriffen und diese für das erstellte Objekt aufgerufen werden.
function Car( model, year, miles ) { this.model = model; this.year = year; this.miles = miles; } // 注意这里我们使用 Object.prototype.newMethod 而不是 Object.prototype ,以避免我们重新定义原型对象 Car.prototype.toString = function () { return this.model + " has done " + this.miles + " miles"; }; // 使用: var civic = new Car( "Honda Civic", 2009, 20000 ); var mondeo = new Car( "Ford Mondeo", 2010, 5000 ); console.log( civic.toString() ); console.log( mondeo.toString() );
Durch den obigen Code wird eine einzelne toString()-Instanz von allen Car-Objekten gemeinsam genutzt.
Verwandte Empfehlungen: Javascript-Lern-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist ein JavaScript-Konstruktor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!