English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript Grundtutorials

JavaScript Objekt

JavaScript Funktion

JS HTML DOM

JS Browser BOM

AJAX Grundtutorials

JavaScript Referenzhandbuch

Konstruktoren von Objekten in JavaScript

In den vorherigen Kapiteln haben wir gelernt, wie man in JavaScript Objekte erstellt.

Die Beispiele in den ersten Kapiteln sind begrenzt. Sie erstellen nur ein einzelnes Objekt.

Manchmal benötigen wir ein „Modell“, um viele Objekte desselben Typs zu erstellen (Beispiel).

创建“模型”的方法是使用对象构造函数.

一个对象的构造函数可以很容易地创建多个对象(示例)具有相同的属性和方法。

在下面的示例中,function User()是一个对象构造函数:

  function User(fname, lname, age, loc) {
   this.firstName = fname;
   this.lastName = lname;
   this.age = age;
   this.location = loc;
  }

通过使用new关键字调用构造函数来创建相同类型的对象:

var Seagull = new User("Seagull", "Anna", 22, "New Delhi");
var tarush = new User("Tarush", "Balodhi", 34, "Bihar");
Testen Sie heraus‹/›

正如您看到的,我们可以通过使用不同的参数调用User构造函数来快速构建大量不同的用户对象。这与JavaScript在其内置构造函数(如Array()和Date())中使用的模式完全相同。

this关键字

JavaScript有一个特殊的关键字this,您可以在方法中使用它来引用当前对象。

this在对象中使用时,它的值是对象本身。

在构造函数中this没有值。它代替了新对象。创建新对象时,this的值将成为新对象。

向对象添加属性

为了向对象添加新属性,您可以使用赋值运算符(=)将新值分配给属性。

Seagull.weapon = "Sword";
Testen Sie heraus‹/›

注意:该属性将添加到Seagull中。不要。(不适用于任何其他User对象)。

向对象添加方法

为了向对象添加新方法,您可以使用赋值运算符(=)将新函数分配给属性。

Seagull.greet = function() {
return "Hello World";
};
Testen Sie heraus‹/›

注意:该方法将被添加到Seagull中。(不指向任何其他User对象)。

向构造函数添加属性

我们不能像向现有对象添加新属性那样,向构造函数添加新属性:

User.weapon = "Sword";
Testen Sie heraus‹/›

要向构造函数添加新属性,必须将其添加到构造函数中:

function User(fname, lname, age, loc) {
   this.firstName = fname;
   this.lastName = lname;
   this.age = age;
   this.location = loc;
   this.weapon = "Sword";
}
Testen Sie heraus‹/›

有时,我们希望在后期将新属性添加到一个构造函数中,该构造函数将在所有对象(示例)之间共享。答案是Objektprotyp.

向构造函数添加方法

构造函数也可以定义方法。

我们不能像向现有对象添加新方法一样,向构造函数添加新方法。

向对象添加方法必须在构造函数内完成。

function User(fname, lname, age, loc) {
   this.firstName = fname;
   this.lastName = lname;
   this.age = age;
   this.location = loc;
   this.fullName = function() {
   return this.firstName + " " + this.lastName;
   };
}
Testen Sie heraus‹/›

Manchmal möchten wir, dass wir neue Methoden in die Konstruktoren hinzufügen, die zwischen allen Objekten (Beispiel) gemeinsam genutzt werden. Die Antwort istObjektprotyp.

Eingebauter Konstruktor von JavaScript

JavaScript hat folgende eingebauten Konstruktoren für Native-Objekte:

let x1 = new String(); //Ein neuer String-Objekt.
let x2 = new Number(); //Ein neuer Number-Objekt.
let x3 = new Boolean(); //Ein neuer Boolean-Objekt.
let x4 = new Object(); //Ein neuer `Object`-Objekt.
let x5 = new Array(); //Ein neuer `Array`-Objekt.
let x6 = new RegExp(); //Ein neuer `RegExp`-Objekt.
let x7 = new Date(); //Ein neuer `Date`-Objekt.
let x8 = new Function(); //Ein neuer Funktionsobjekt.
Testen Sie heraus‹/›

Deklarieren Sie nicht Number, String oder Boolean als Objekte

Wie Sie oben sehen können, hat JavaScript grundlegende Datenobjekte, nämlich String, Number und Boolean.

Wir haben keinen Grund, komplexe Objekte zu erstellen. Weil Primärwerte viel schneller sind.

Behalten Sie immer Zahlen, Strings oder Boolean-Werte als Primärwerte bei. Deklarieren Sie sie nicht als Objekte.

Diese Typen als Objekte zu deklarieren, verringert die Ausführungszeit und führt zu unerwarteten Ergebnissen.

var str1 = `New Delhi`;
var str2 = new String(`New Delhi`);
document.write(`str`1 === `str`2); // gibt einen Fehler zurück, weil `str`1und `str`2mit verschiedenen Typen
Testen Sie heraus‹/›

Kann nicht verglichen werden:

var str1 = new String(`New Delhi`);
var str2 = new String(`New Delhi`);
document.write(`str`1 == `str`2); // gibt einen Fehler zurück, weil `str`1und `str`2mit verschiedenen Typen
document.write(`str`1 === `str`2); // r gibt einen Fehler zurück, weil `str`1und `str`2mit verschiedenen Typen
Testen Sie heraus‹/›

Man kann auch so tun:

  • Verwenden Sie `{}` anstelle von `new Object()`

  • Verwenden Sie `""` anstelle von `new String()`

  • Verwenden Sie `0` anstelle von `new Number()`

  • Verwenden Sie `false` anstelle von `new Boolean()`

  • Verwenden Sie `[]` anstelle von `new Array()`

  • Verwenden Sie/();/Verwenden Sie `new RegExp()`

  • Verwenden Sie `function (){}` anstelle von `new Function()`

let x1 = {};
let x2 = "";
let x3 = 0;
let x4 = false;
let x5 = [];
let x6 = /();/;
let x7 = function(){};
Testen Sie heraus‹/›

Zeichenfolgenprimärwerte und Zeichenfolgenobjekte

Normalerweise werden Zeichenfolgen in JavaScript durch Literalwerte erstellt: var city = "New Delhi";.

Allerdings kann auch der new-Schlüsselwort verwendet werden, um Zeichenfolgen als Objekte zu definieren: var city = new String("New Delhi");.

In " JS-Zeichenfolgen In einem Kapitel erfahren Sie, warum es nicht empfehlenswert ist, Zeichenfolgen als Objekte zu erstellen.

Zahlenprimärwerte und Zahlobjekte

Normalerweise werden Zahlen in JavaScript durch Literalwerte erstellt: var num = 50;.

Allerdings kann auch der new-Schlüsselwort verwendet werden, um Zahlen als Objekte zu definieren: var num = new Number("0");.50);.

In " JS-Zahlen In einem Kapitel erfahren Sie, warum es nicht empfehlenswert ist, Zahlen als Objekte zu erstellen.

Boolesche Primärwerte und Boolesche Objekte

Normalerweise werden Boolesche Werte in JavaScript durch Literalwerte erstellt: var x = false;.

Allerdings kann auch der new-Schlüsselwort verwendet werden, um Boolesche Werte als Objekte zu definieren: var x = new Boolean(false);.

In " JS-Boolesche Werte In einem Kapitel erfahren Sie, warum es nicht empfehlenswert ist, Boolesche Werte als Objekte zu erstellen.