ES6中原型的等价物

时间:2016-12-17 02:46:22

标签: javascript ecmascript-6 prototype

我开始在ES6中使用JavaScript的背景知识。我有个问题。我有一个类似以下的ES6课程:

class User{
 constructor(){
 }

 doSomething(){
 }
}

我的问题是每次实例化这个对象时都会创建doSomething方法吗?在之前的JS中,我们可以取出doSomething并使用" prototype"创建它。确保doSomething创建一次,而不是每次我们实例化对象。但是,我注意到在ES6中实现相同效果的正确方法。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:13)

  

我的问题是" doSomething"每次我们实例化这个对象时都会创建方法吗?

没有。对于构造函数+原型,class语法或多或少只是syntactic sugar。即结果(几乎)相当于:

function User() {}
User.prototype.doSomething = function() { };

查看Chrome产生的结果:

enter image description here

  

但是,我注意到在ES6中实现相同效果的正确方法。

如上所述,class为你做到了这一点。引入class的重点是使prototype上的构造函数和设置方法更容易(因此语法糖)。

如果您想了解更多信息,请查看

  • MDN - Classes

      

    ECMAScript 6中引入的JavaScript类是基于JavaScript的现有基于原型的继承的语法糖。类语法向JavaScript引入新的面向对象的继承模型。 JavaScript类提供了更简单,更清晰的语法来创建对象和处理继承。

  • YDKJS - ES6 & Beyond

答案 1 :(得分:3)

绝对不是。似乎没有更多绑定方法在ES6中手动原型,但事实是ES6帮助我们在后台做到这一点 正如MDN所说:

  

ECMAScript 6中引入的JavaScript类是JavaScript现有的基于原型的继承的语法糖。类语法没有向JavaScript引入新的面向对象的继承模型。 JavaScript类提供了更简单,更清晰的语法来创建对象和处理继承。