A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype below:

Funktion: prototype - JavaScript | MDN

Wenn eine Funktion mit new aufgerufen wird, wird die prototype-Eigenschaft des Konstruktors das Prototyp-Objekt des resultierenden Objekts.

function Ctor() {}
const inst = new Ctor();
console.log(Object.getPrototypeOf(inst) === Ctor.prototype); // true

Sie können Vererbung und die Prototypkette lesen, um mehr über die Interaktionen zwischen der prototype-Eigenschaft einer Konstruktorfunktion und dem Prototyp-Objekt des resultierenden Objekts zu erfahren.

Es reicht nicht aus, dass eine Funktion eine prototype-Eigenschaft hat, damit sie als Konstruktor in Frage kommt. Generatorfunktionen haben eine prototype-Eigenschaft, können aber nicht mit new aufgerufen werden:

async function* asyncGeneratorFunction() {}
function* generatorFunction() {}

Stattdessen wird die prototype-Eigenschaft von Generatorfunktionen verwendet, wenn sie ohne new aufgerufen werden. Die prototype-Eigenschaft wird das Prototyp-Objekt des zurückgegebenen Generator-Objekts.

Zusätzlich können einige Funktionen eine prototype-Eigenschaft haben, werfen jedoch bedingungslos einen Fehler, wenn sie mit new aufgerufen werden. Zum Beispiel werfen die Symbol()- und BigInt()-Funktionen einen Fehler, wenn sie mit new aufgerufen werden, da Symbol.prototype und BigInt.prototype nur Methoden für die primitiven Werte bereitstellen sollen, aber die Wrapper-Objekte nicht direkt konstruiert werden sollten.

Folgende Funktionen haben kein prototype und sind daher nicht als Konstruktoren geeignet, auch wenn später manuell eine prototype-Eigenschaft zugewiesen wird:

const method = { foo() {} }.foo;
const arrowFunction = () => {};
async function asyncFunction() {}

Folgende sind gültige Konstruktoren, die prototype haben:

class Class {}
function fn() {}

Eine gebundene Funktion hat keine prototype-Eigenschaft, kann aber dennoch konstruierbar sein. Wenn sie konstruiert wird, wird stattdessen die Ziel-Funktion konstruiert, und wenn die Ziel-Funktion konstruierbar ist, würde sie eine normale Instanz zurückgeben.

const boundFunction = function () {}.bind(null);

Die prototype-Eigenschaft einer Funktion ist standardmäßig ein einfaches Objekt mit einer Eigenschaft: constructor, die ein Verweis auf die Funktion selbst ist. Die constructor-Eigenschaft ist beschreibbar, nicht aufzählbar und konfigurierbar.

Wenn das prototype einer Funktion mit etwas anderem als einem Object neu zugewiesen wird, würde bei einem Aufruf der Funktion mit new das zurückgegebene Objekt Object.prototype als Prototyp haben. (Mit anderen Worten, new ignoriert die prototype-Eigenschaft und konstruiert ein einfaches Objekt.)

function Ctor() {}
Ctor.prototype = 3;
console.log(Object.getPrototypeOf(new Ctor()) === Object.prototype); // true

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4