请看下面的示例代码,并请解释我下面提到的问题!
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原本没有Class的概念,对于JavaScript中的OOP,实现了基于原型的方法。
从ESX(记不清楚了)开始,引入了Class的概念,实质上是把基于原型的语法,包装成了更流行的基于Class的语法,开发者通常习惯于在不同的语言中使用这种语法。
我鼓励使用新的语法,因为它通常更易读,(至少对我来说)在JavaScript中处理对象时更有意义。
JavaScript在给我们带来asyncawait的时候也实现了类似的概念,将老的 Promise.resolve|.reject
与同步感觉的API,JavaScript充满了语法糖和黑客工作法,以提供与其他语言类似的支持。
这里的答案是没有。这些有效地做了同样的事情,只是是否使用了ES6类语法的问题。
详情请关注这个。https:/www.toptal.comjavascriptes6-class-chaos-keeps-js-developer-up
另外,如果有人想了解更多关于ES5与ES6或javascript概念的细节。你可以参考我的PPT上的一些主题。https:/docs.google.compresentationd1Rf_Ln2F-qmb3yrsTSrOnXbzqeTpOFhK72MHDhLOIRC8edit#slide=id.p。
谢谢