Używamy maszynopisu do naszego rozwoju. Otrzymałem również komentarz z recenzji, że nie powinniśmy używać słowa kluczowego „to”, ponieważ ogranicza to wydajność. Kod oryginalny:

export Class MyClass
    {
    public myMethod1(Data) {     
            this.myMethod2();
        }

    public myMethod2() {
        }
    }

Używamy jak poniżej, aby uzyskać dostęp do „tego”. Po zmianie:

export Class MyClass
{
public myMethod1(Data) {
        let self = this;
        self.myMethod2();
    }

public myMethod2() {
    }
}

Czy mógłbyś więc pomóc w implikacji użycia słowa kluczowego „this”.

0
Ashish Sapkale 30 grudzień 2019, 09:23

1 odpowiedź

Najlepsza odpowiedź

Nie ma to wpływu na wydajność. Ale użycie zmiennej o nazwie self i zainicjowanie jej z this na początku każdej metody klasy może pomóc uniknąć niepożądanych zachowań. Na przykład:

Class MyClass
{
    public foo () {
        const self = this;

        callMeLater(function (){
            console.log(self); // "self" is always the instance of MyClass
            console.log(this); // "this" may refer to another object!
        });
    }
}

W tym przykładzie self jest przechwytywany, gdy zawiera odniesienie do instancji MyClass, aw funkcji wywołania zwrotnego nadal wskazuje na instancję MyClass, ale w funkcji wywołania zwrotnego this może odnosić się do czegoś innego, zależy od tego, jak wywoływana jest funkcja zwrotna.

1
frogatto 30 grudzień 2019, 06:49