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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-06 21:43:15651Durchsuche

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

Aufrufen der .apply()-Methode mit dem neuen Operator: Ist das machbar?

In JavaScript kann es wünschenswert sein, eine Objektinstanz mit dem neuen Operator zu erstellen während eine variable Anzahl von Argumenten an den Konstruktor übergeben wird. Dies ist jedoch mit dem von Ihnen bereitgestellten Code-Snippet nicht möglich.

Alternative Lösungen

1. Matthew Crumleys Ansatz:

Diese Lösung beinhaltet die Erstellung einer neuen Funktion, F, die den Something-Prototyp erweitert und einen Wrapper für die apply()-Methode bereitstellt. Es kann wie folgt umgesetzt werden:

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

    return function() {
        return new F(arguments);
    }
})();

2. ECMAScript 5-Lösung:

Mit ECMAScript 5 kann die Methode Function.prototype.bind für eine präzisere Lösung verwendet werden:

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

Diese Funktion kann wie folgt verwendet werden:

var s = newCall(Something, a, b, c);

oder sogar direkt:

var s = new (Function.prototype.bind.call(Something, null, a, b, c));

Erklärung:

Die Bindungsmethode ermöglicht es uns, eine neue Funktion zu erstellen, die denselben Kontext (diesen Wert) wie die ursprüngliche Funktion hat, aber übernimmt eine begrenzte Anzahl von Argumenten. Mithilfe der Methode apply() können wir eine variable Anzahl von Argumenten an die gebundene Funktion übergeben. Schließlich kann der neue Operator auf die gebundene Funktion angewendet werden, um eine neue Objektinstanz zu erstellen.

Das obige ist der detaillierte Inhalt vonKönnen Sie den „new'-Operator mit „.apply()' 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!

Stellungnahme:
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