请填写我所拥有的知识空白:
从ECMA5开始,Object.create()是创建对象的标准方法,因为传入的值是创建的对象的原型所指向的
VS
使用' new'构造函数,它将使创建的对象的原型指向构造对象的原型。另外使用new运行函数中的构造函数代码。
现在使用ECMA6,并且我知道只是语法糖的类的引入,仍然是使用Object.create()的标准?我假设类只是函数构造函数的语法糖,或等同于使用' new'创建对象的方法。
如果是这种情况,为什么像React这样的框架会使用Classes,如果Object.create效率更高?
答案 0 :(得分:1)
ES6类不是语法糖,对于ES5,它们被转换为传统的基于原型的构造,但在本机ES6支持中,它的工作效率更高。
我们使用React中的类来习惯这种语法,因为在接下来的几年里,这将是完全支持的本机机制。
目前,对于对象创建,您可以使用Object.create
和new
。还有对象文字。
关闭对象工厂的方法现在是“清洁代码推荐”之一 - 更好地控制耦合,本地(“私有”)变量和方法的好处。
答案 1 :(得分:0)
如你所说,class
es只是构造函数的语法糖。他们根本不会改变画面。有时您会想要使用new
,有时您会想要使用Object.create
,他们会做不同的事情:
同样使用new运行函数
中的构造函数代码
React需要这个,所以他们使用构造函数。