Есть ли недостаток в использовании глобальной функции вместо частного метода stati c в Typescript - PullRequest
0 голосов
/ 25 февраля 2020

Меня раздражает необходимость писать this.myMethod() или ClassName.myMethod() вместо просто myMethod().
Особенно, когда метод является утилитой без сохранения состояния, которой не требуется прямой доступ к полям.

Вот пример:

function method1() { }

class App {
    main() {
        method1(); // I want to use this
        App.method2();
    }

    private static method2() { 
        // stateless and don't need access to fields
    }
}

Мне интересно, есть ли причина не использовать глобальную функцию вместо закрытого метода stati c (или наоборот).

1 Ответ

1 голос
/ 25 февраля 2020

Есть много причин, чтобы не использовать глобальные методы.

Сначала набирается. Типы методов уже связаны с классом / экземпляром. Чтобы ввести глобальную функцию, вы также должны перезаписать модуль global.

Второй - это конфликт имен. Вы можете легко перезаписать один глобальный метод другим. В случае методов класса: вы можете назвать каждый закрытый метод в классах method, и ни один из них не будет перезаписан.

В-третьих, вы не можете использовать this в качестве экземпляра класса в глобальной функции.

Четвертый - это скоростной (но я не знаю, сколько) закрытый метод находится в базовом объеме c, а глобальный - в последнем. Поэтому V8 в runTime проверит каждую область видимости между этим и глобальным.

...