Javascript ES6中原型的等效性
我从ES6开始,背景是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中实现相同效果的正确方法。任何帮助都将不胜感激 我的问题是,每次实例化这个对
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控制台功能还是事实上每个实例都填充了类方法。。。