Kann String # trim nicht als Callback für Array # map verwenden

8

Aus irgendeinem Grund kann ich String.prototype.trim.call nicht als Callback für Array-Methoden verwenden, z. B. map oder filter .

In diesem Fall funktionieren zwei Funktionen gleich:

%Vor%

Wenn ich jedoch versuche, sie als Callback für eine Array-Methode zu übergeben, schlägt die zweite fehl:

%Vor%

Demo: Ссылка

Ich gehe davon aus, dass this im letzteren Fall nicht auf ein Array-Element zeigt, aber ich möchte eine klare Erklärung dafür bekommen, was passiert.

    
Pavlo 17.01.2014, 12:47
quelle

1 Antwort

9
%Vor%

Wenn Sie im ersten Fall die Methode call aufrufen, wird this value ist an die Funktion String.prototype.trim gebunden. Im zweiten Fall greifen Sie einfach auf die Funktion call zu, ohne dass sie an irgendetwas gebunden ist - Sie hätten einfach

verwenden können %Vor%

Diese Methode wird mit nichts als this -Wert, dem Element aus Ihrem Array, dem Index und dem gesamten Array als Parameter aufgerufen. Wenn Sie call nicht für eine Funktion aufrufen, wird sie ausgelöst. Sie können entweder den zweiten Parameter von map oder verwenden die Methode bind , um den this -Wert zu korrigieren für die call :

%Vor%     
Bergi 17.01.2014, 13:00
quelle

Tags und Links