ES6中原型的等价物

fur*_*866 8 javascript prototype ecmascript-6

我开始在ES6中使用JavaScript背景.我有个问题.我有一个ES6类,如下所示:

class User{
 constructor(){
 }

 doSomething(){
 }
}
Run Code Online (Sandbox Code Playgroud)

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

Fel*_*ing 14

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

不.class语法或多或少只是构造函数+原型的语法糖.即结果(几乎)相当于:

function User() {}
User.prototype.doSomething = function() { };
Run Code Online (Sandbox Code Playgroud)

看看Chrome产生的结果:

在此输入图像描述

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

如上所述,class那是为你做的.引入的重点class是使创建构造函数和设置方法prototype更容易(因此语法糖).


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

  • MDN - 课程

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

  • YDKJS - ES6及以上

  • 这是相关的,因为 OP 正在询问在 ES6 中执行此操作的“正确”方法,这意味着您应该显示论点的双方。 (2认同)