В чем разница между методами класса методов и прототипом? - PullRequest
1 голос
/ 09 мая 2020

см. Ниже образец кода и, пожалуйста, объясните мой вопрос, который я упоминаю ниже!

class User{
  constructor(email,name){
    this.email = email;
    this.name = name;
  }
  
  login(){
    console.log(this.email);
  }
}

var u1 = new User("dil@gm.com","dil");
u1.login();

function User(email,name){
  this.email = email;
  this.name = name;
}

User.prototype.login = function(){
  console.log(this.email);
}

var u2 = new User("dil@gm.com","dil");
u2.login();

в чем разница между двумя вышеперечисленными типами кодирования? Я имею в виду обычное объявление метода и замедление прототипа, когда оба экземпляра обращаются к этим методам?

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Ничего.

JavaScript изначально не имело концепции класса, для OOP в JavaScript был реализован подход на основе прототипов.

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

I Я бы рекомендовал использовать новый синтаксис, поскольку он в целом более читабелен и (по крайней мере, для меня) имеет больше смысла при работе с объектами в JavaScript.

JavaScript реализовал аналогичную концепцию при использовании async / await, оборачивая старый Promise.resolve|.reject API синхронного восприятия, JavaScript полон синтаксического сахара и хитрых обходных путей для обеспечения поддержки, аналогичной другим языкам.

0 голосов
/ 09 мая 2020

Ответ здесь - его нет. По сути, они делают то же самое, вопрос только в том, использовался ли синтаксис класса ES6.

Пожалуйста, следуйте этому для получения дополнительной информации: https://www.toptal.com/javascript/es6-class-chaos-keeps-js-developer-up

Также, если кто-то хочет получить более подробную информацию о концепциях ES5 и ES6 или javascript. Вы можете сослаться на мой PPT по некоторым темам: https://docs.google.com/presentation/d/1Rf_Ln2F-qmb3yrsTSrOnXbzqeTpOFhK72MHDhLOIRC8/edit#slide = id.p

Спасибо!

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