Четыре года лизания собак класса es6

JavaScript

чаша

У каждого есть прошлое, но это только прошлое...

В летние каникулы 2013 года, чтобы уменьшить нагрузку на семью, я поехал на стройку подрабатывать мелким рабочим, помогал штукатурным мастерам поднимать штукатурку, ведь моя семья в деревне. Родители сказали, что университет выделял мне 1000 в месяц на проживание, очень доволен.
Через два месяца университетская жизнь, которую я так ждал, наконец-то наступила.На самом деле вступительные экзамены в колледж в том году были не идеальными.Я читал обычного бакалавра и с неохотой пришел в университет.Я подумал про себя,я хочу работать усердно и упорно учиться.Может у кого-то была такая же мысль как у меня,но потом выяснилось,что это были просто размышления...В первый день доклада одноклассники по очереди представлялись.Когда подошла моя очередь,я помню только что я очень нервничал.Когда я был на подиуме, я заикался и представился.К счастью, подиум закрывал мою непослушную левую ногу.В то время я плохо выражался,и у меня были серьезные социальные страхи,плюс Комплекс неполноценности деревенщины.
Я на самом деле очень обычная. Никто не будет намеренно фокусироваться на обычных людях. Когда подошла ее очередь представиться, в тот момент, когда я увидел ее, я впервые почувствовал биение сердца. Братцы, вы все еще можете думать об этом. вы чувствуете это, когда встречаете кого-то, кто вам нравится в первый раз? Активные мальчишки в классе засвистели, а я пристально посмотрела на нее, сохранила в сердце его имя, откуда он и т. д., и сейчас до сих пор кадр за кадром могу воспроизвести в памяти тот день. сцена, она девушка из большого города, рост около 165, иностранка, уверенная в себе, красивая.....
В общежитии ночью соседний общежитие говорит о ней, и я могу только молча слушать их разговоры.Я знаю, что не достоин этого с ног до головы.Она белый лебедь, а я жаба, а жаба хочет кушать лебяжье мясо. , братцы можно понять мое настроение в это время? Конечно, первый удар сердца за более чем десять лет не закончится так скоропалительно...

Позже я продолжу говорить о своей любви, но не о скромной любви. Незнакомцы, пожалуйста, дайте мне Ланьчжоу

Конструктор

LickDog — это конструктор, который является экземпляром LickDog,
ding.proto===LickDog.prototype

    function LickDog(name, lick) {
      this.name = name;
      this.like = lick;
    }
    LickDog.prototype.love = function () {
      return this.like;
    };
    const ding = new LickDog("舔狗", "班花");

image.png

class

класс в es6 можно рассматривать как синтаксический сахар для конструкторов, а нижний слой по-прежнему остается конструктором.
class LickDog {
      constructor(name, lick) {
        this.name = name;
        this.like = lick;
      }
      love() {
        return this.like;
      }
    }
  const ding = new LickDog("舔狗", "班花");

image.png

Метод конструктора — это функция-конструктор класса, которая является методом по умолчанию и автоматически вызывается при создании экземпляра объекта с помощью новой команды.
Методы конструктора и любви монтируются в LickDog.prototype.
На данный момент ding.constructor===LickDog LickDog.prototype.constructor = LickDog

Затем взгляните на статические методы и статические свойства класса, и это внутри

class LickDog {
      constructor(name, lick) {
        console.log(this);
        this.name = name;
        this.like = lick;
      }
        
      static love() {
        return this.like;
      }
    }
    const ding = new LickDog("舔狗", "班花");

image.png

Лизать собак, хорошо видно, что в LickDog.constructor есть метод like, напомню, что LickDog.prototype.constructor = LickDog означает, что like связан с LickDog, а не с LickDog.prototype.
Если вы хотите получить доступ к методу любви через LickDog.love() , экземпляр ding недостижим.
Это в статическом методе love указывает на LickDog, а это в конструкторе указывает на ding

наследовать

 class LickDog {
     static love() {
       return "班花";
     }
   }
 class LickDog1 extends LickDog {}

image.png

Статические методы могут быть унаследованы, но доступны только для подклассов.
Статические методы и статические свойства похожи, но не вводят слишком много

супер понимание

class LickDog {
      constructor(name, lick) {
        this.name = name;
        this.like = lick;
      }

      love() {
        return this.like;
      }
    }
    class LickDog1 extends LickDog {
      constructor(name, lick, money) {
        console.log(this)  //super(name, lick)会调用父类的constructor(name, lick)   所以在super之前获取this是会报错 拿不到父类对象
        super(name, lick);
        console.log(JSON.parse(JSON.stringify(this))); //不会报错的
        this.money = money;
      }
      love1() {
      // super能调用父类love 但super是拿不到 name和like的是undefind
        return this.money + " 不配喜欢 " + super.love(); 
      }
    }
    const ding1 = new LickDog1("舔狗", "班花", "6块");

image.png image.png

Братья, love1() напечатала "6 юаней не достойны симпатии класса." Разве бедняки не могут любить? К счастью, super.love() может получить значение Причина в следующем:super.love()эквивалентноLickDog.prototype.love(), а имя и тому подобное находятся на экземпляре LickDog,
super как объект - это объект-прототип, представляющий родительский класс
В качестве функции super показывает конструктор родительского класса и генерирует объект this родительского класса, поэтому после super() вы можете получить это
super называется базовым классом.Я не понимаю, почему он так называется.Я глубоко скопировал это в это время на картинке ниже.