Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6中原型的等效性_Javascript_Ecmascript 6_Prototype - Fatal编程技术网

Javascript ES6中原型的等效性

Javascript ES6中原型的等效性,javascript,ecmascript-6,prototype,Javascript,Ecmascript 6,Prototype,我从ES6开始,背景是JavaScript。我有个问题。我的ES6课程如下: class User{ constructor(){ } doSomething(){ } } 我的问题是,doSomething方法是否在每次实例化此对象时创建?在以前的JS中,我们可以取出doSomething并使用“prototype”创建它,以确保doSomething只创建一次,而不是每次实例化对象时。然而,我确信在ES6中实现相同效果的正确方法。任何帮助都将不胜感激 我的问题是,每次实例化这个对

我从ES6开始,背景是JavaScript。我有个问题。我的ES6课程如下:

class User{
 constructor(){
 }

 doSomething(){
 }
}
我的问题是,
doSomething
方法是否在每次实例化此对象时创建?在以前的JS中,我们可以取出
doSomething
并使用“prototype”创建它,以确保
doSomething
只创建一次,而不是每次实例化对象时。然而,我确信在ES6中实现相同效果的正确方法。任何帮助都将不胜感激

我的问题是,每次实例化这个对象时,是否都会创建“doSomething”方法

不。类的
语法或多或少只是针对构造函数+原型。即,结果(几乎)相当于:

function User() {}
User.prototype.doSomething = function() { };
看看Chrome生成的结果:

然而,我确信在ES6中实现相同效果的正确方法

如前所述,
class
为您提供了这一功能。引入
的全部目的是使在
原型
上创建构造函数和设置方法更容易(因此语法上更容易)


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

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


  • 绝对不是。在ES6中,似乎不再有手动绑定原型的方法,但事实是ES6帮助我们在后台完成了这项工作。
    正如MDN所说:

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


    值得注意的是,有些人认为
    class
    是。这是相关的,因为OP询问在ES6中执行此操作的“正确”方法,这意味着您应该显示论点的两面。我注意到的区别是,class User doSomething既作为实例方法出现,也作为User对象的
    \u proto\u
    内部出现,而
    User.prototype.doSomething
    仅显示在
    \uuuuuuuuuuuuuuuu
    中。不确定这是Chrome控制台功能还是事实上每个实例都填充了类方法。。。