Почему люди [1] .a не имеют доступа к свойствам из класса User? - PullRequest
0 голосов
/ 20 февраля 2020

Почему люди [1] .a не имеют доступа к свойствам из класса User, но нуждаются во вложении через proto ?!

class User {
        constructor(name, age) {
            this.name = name;
            this.age = age;
        }

        static a = 12;
    }

    class User2 extends User {}

    let people = [
        new User2('Vasia', 20),
        new User2('Peter', 19),
        new User2('Misha', 21),
    ]



    console.dir(User2.a) // 12
    console.dir(people[1].a) // ?????

1 Ответ

3 голосов
/ 20 февраля 2020

static свойства появляются на объектах класса. Они не появляются в экземплярах класса.

Они предназначены для хранения методов stati c.

С MDN :

Ключевое слово stati c определяет метод stati c для класса. Методы Stati c не вызываются для экземпляров класса. Вместо этого они вызваны на сам класс. Часто это служебные функции, например, функции для создания или клонирования объектов.

...