如何在ES6中引入类更改对象创建以及使用类的React等框架如何?

时间:2016-05-19 19:49:22

标签: javascript inheritance reactjs

请填写我所拥有的知识空白:

从ECMA5开始,Object.create()是创建对象的标准方法,因为传入的值是创建的对象的原型所指向的

VS

使用' new'构造函数,它将使创建的对象的原型指向构造对象的原型。另外使用new运行函数中的构造函数代码。

现在使用ECMA6,并且我知道只是语法糖的类的引入,仍然是使用Object.create()的标准?我假设类只是函数构造函数的语法糖,或等同于使用' new'创建对象的方法。

如果是这种情况,为什么像React这样的框架会使用Classes,如果Object.create效率更高?

2 个答案:

答案 0 :(得分:1)

ES6类不是语法糖,对于ES5,它们被转换为传统的基于原型的构造,但在本机ES6支持中,它的工作效率更高。

我们使用React中的类来习惯这种语法,因为在接下来的几年里,这将是完全支持的本机机制。

目前,对于对象创建,您可以使用Object.createnew。还有对象文字。 关闭对象工厂的方法现在是“清洁代码推荐”之一 - 更好地控制耦合,本地(“私有”)变量和方法的好处。

答案 1 :(得分:0)

如你所说,class es只是构造函数的语法糖。他们根本不会改变画面。有时您会想要使用new,有时您会想要使用Object.create,他们会做不同的事情:

  

同样使用new运行函数

中的构造函数代码

React需要这个,所以他们使用构造函数。