Разъяснения относительно класса и функций - PullRequest
0 голосов
/ 04 ноября 2019

Сначала я извиняюсь, если уже есть вопрос по этой теме, я не могу найти ответ. Мне просто нужно разъяснение, может быть, я что-то упустил. Я новичок в этом. Спасибо!

Итак, у меня есть класс и функция, которые оба возвращают приветствие.

Если я также могу использовать метод приветствия класса, почему или когда мне следует использовать функцию?

class Greeter{ 
    fullName: string;
    constructor(public firstName:string, public lastName:string) { 
        this.fullName = firstName + " " + lastName;
    }
    greetName() { 
        return "Hello, " + this.fullName;
    }
}

//this function is outside of class greeter
function greeter(firstName: string, lastName: string) {
    return "Hello, " + firstName + " " + lastName;
}

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Функции внутри классов называются «методами». Эти методы связаны с экземпляром класса, который называется объектом. Обычно методы используются для возврата или изменения состояния объектов.

Функции вне классов обычно используются для выполнения некоторых действий без изменения состояния. Например, они вычисляют что-то, а затем возвращают значение.

Как уже указывал @Rufi, вы можете использовать метод greeter только после создания экземпляра класса (через конструктор). Это не имеет большого смысла в этом случае.

В вашем случае разница между двумя приведенными примерами заключается в том, что один связан с состоянием объекта (путем доступа к this.fullname), а другойодин чистый (не привязанный ни к какому состоянию, он просто использует заданные параметры для создания нового значения).

Надеюсь, это поможет!

0 голосов
/ 04 ноября 2019

Вы должны использовать функцию greeter, если вы еще не создали объект класса Greeter.

. Вы можете использовать функцию Greeter#greetName только после вызова constructor, поэтомуобъект будет создан, в противном случае он потерпит неудачу.

Если вас очень смущает, что приветствующий функции находится вне класса, вы можете поместить его внутрь, но пометить как функцию static, тогда вы будетебыть в состоянии назвать его как Greeter.greeter без создания объекта класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...