Heim > Web-Frontend > js-Tutorial > Können Sie „.apply()' mit dem „new'-Operator in JavaScript verwenden, um Objekte mit variablen Argumenten zu erstellen?

Können Sie „.apply()' mit dem „new'-Operator in JavaScript verwenden, um Objekte mit variablen Argumenten zu erstellen?

Linda Hamilton
Freigeben: 2024-12-11 14:15:11
Original
738 Leute haben es durchsucht

Can You Use `.apply()` with the `new` Operator in JavaScript to Create Objects with Variable Arguments?

Neue Objekte mit variablen Argumenten: .apply() und den „new“-Operator entmystifizieren

In JavaScript wird häufig eine Objektinstanz mit dem „new“-Operator erstellt erfolgt durch direkte Übergabe von Argumenten an den Konstruktor. Es gibt jedoch Szenarien, in denen man Argumente dynamisch bereitstellen möchte. In diesem Artikel geht es um die Frage, ob die Verwendung von „.apply()“ mit dem „new“-Operator machbar ist, um dies zu erreichen.

Einschränkungen von .apply() mit „new“

Trotzdem Aufgrund der Vielseitigkeit kann die Methode „.apply()“ nicht direkt mit dem Operator „new“ verwendet werden. Versuche, dies zu tun, führen zu unerwartetem Verhalten oder Fehlern.

Alternative Lösungen

Die JavaScript-Community hat den Bedarf an solchen Funktionen erkannt und verschiedene innovative Lösungen vorgeschlagen.

Funktionsprototyp

Ein Ansatz, der Matthew Crumley zugeschrieben wird, verwendet einen Funktionsprototyp, um einen zu erstellen Problemumgehung:

var createSomething = (function() {
    function F(args) {
        return Something.apply(this, args);
    }
    F.prototype = Something.prototype;

    return function() {
        return new F(arguments);
    }
})();
Nach dem Login kopieren

Diese Lösung erstellt effektiv eine neue Funktion mit dem gewünschten Verhalten.

ECMAScript 5

„Function.prototype.bind“ von ECMAScript 5 bietet eine sauberere Lösung :

function newCall(Cls) {
    return new (Function.prototype.bind.apply(Cls, arguments));
}
Nach dem Login kopieren

Diese Methode lässt sich nahtlos in den „neuen“ Operator integrieren und kann auf alle Arten von angewendet werden Konstruktoren, einschließlich solcher mit besonderem Verhalten wie „Datum“.

Eval-Methode (Vorsicht)

Obwohl aufgrund möglicher Sicherheitsbedenken davon abgeraten wird, bietet die „eval“-Methode eine weitere Problemumgehung:

var s = eval("new Something(" + [a, b, c] + ")");
Nach dem Login kopieren

Die Lösungen verstehen

Diese Lösungen nutzen die bind()-Methode, um eine Funktion zu erstellen, die das Gewünschte akzeptiert Argumente. Dann wird der „new“-Operator verwendet, um ein Objekt aus dieser Funktion zu instanziieren.

Fazit

Das Erstellen von Objekten mit variablen Argumenten mithilfe von „.apply()“ und dem „new“-Operator erfordert einiges Einfallsreichtum. Durch die Nutzung der verfügbaren JavaScript-Funktionen können Entwickler diese Techniken implementieren, um die gewünschte Funktionalität zu erreichen.

Das obige ist der detaillierte Inhalt vonKönnen Sie „.apply()' mit dem „new'-Operator in JavaScript verwenden, um Objekte mit variablen Argumenten zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage