方法类方法和原型的区别是什么?

问题描述 投票:1回答:1

请看下面的示例代码,并请解释我下面提到的问题!

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

var u1 = new User("[email protected]","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("[email protected]","dil");
u2.login();

以上两种类型的编码之间有什么区别?我是说正常的方法声明和原型减速时,两个实例都访问这些方法?

javascript methods prototype
1个回答
1
投票

什么都没有。

JavaScript原本没有Class的概念,对于JavaScript中的OOP,实现了基于原型的方法。

从ESX(记不清楚了)开始,引入了Class的概念,实质上是把基于原型的语法,包装成了更流行的基于Class的语法,开发者通常习惯于在不同的语言中使用这种语法。

我鼓励使用新的语法,因为它通常更易读,(至少对我来说)在JavaScript中处理对象时更有意义。

JavaScript在给我们带来asyncawait的时候也实现了类似的概念,将老的 Promise.resolve|.reject 与同步感觉的API,JavaScript充满了语法糖和黑客工作法,以提供与其他语言类似的支持。


0
投票

这里的答案是没有。这些有效地做了同样的事情,只是是否使用了ES6类语法的问题。

详情请关注这个。https:/www.toptal.comjavascriptes6-class-chaos-keeps-js-developer-up

另外,如果有人想了解更多关于ES5与ES6或javascript概念的细节。你可以参考我的PPT上的一些主题。https:/docs.google.compresentationd1Rf_Ln2F-qmb3yrsTSrOnXbzqeTpOFhK72MHDhLOIRC8edit#slide=id.p。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.