Конструктор JavaScript - Как JavaScript определяет конструктор? - PullRequest
0 голосов
/ 18 ноября 2018

В настоящее время я изучаю все, что могу о ООП с помощью JavaScript, и у меня есть следующий код:

var Person = (function() {
    var protectedMembers;

    function capitalizeString(str) {
        return str.charAt(0).toUpperCase() + string.slice(1);
    }

    function PersonConstructor(name, surname, protected) {
        protectedMembers = protected || {};

        protectedMembers.capitalizeString = capitalizeString;
        this.name = capitalizeString(name);
        this.surname = capitalizeString(surname);
    }

    return PersonConstructor;

}());

Итак, как JavaScript узнает, что PersonContructor является конструктором, а не прописной строкой? Я имею в виду, я знаю, что я имею в виду, что функция PersonConstructor является конструктором, но как движок JavaScript или что-то еще определяет это? Это только потому, что я возвращаю это? Или это потому, что я использую это в PersonConstructor? Или это из-за обеих вещей?

Я посмотрел другие вопросы StackOverflow, в которых говорится о JavaScript и конструкторах, но они не ответили на этот конкретный вопрос, если я что-то не заметил.

Спасибо!

1 Ответ

0 голосов
/ 18 ноября 2018

Итак, как JavaScript узнает, что PersonContructor является конструктором, а не прописной строкой?

Это только потому, что я его возвращаю?

Поскольку вы возвращаете PersonContructor, PersonContructor присваивается Person. Вы не возвращаете capitalizeString, поэтому он не назначен на Person.

Если бы вы позже вызвали new Person(), он бы знал, что это конструктор, потому что вы использовали ключевое слово new.

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