JavaScript可以被视为基于类的语言吗?

时间:2017-08-14 01:17:32

标签: javascript oop ecmascript-6

在ES6之前,JavaScript没有办法创建类(我知道它有自己的方法来创建它们是构造函数......)并且它是一种基于原型的语言。

现在,在添加类声明和新的继承方式后,它可以被认为是基于类的语言,如Java和C ++吗?

1 个答案:

答案 0 :(得分:3)

Javascript是一种面向对象的语言,并且一直都是。

新的ES6类语法只是提供了一种更漂亮的方式来声明你在ES6之前已经在语言中做过的事情(你只需要手动配置现在为你完成的事情)。

新的ES6类语法仍然使用原型,与ES5中的对象完全相同。所以,实际上并没有什么新内容。 ES6将大多数开发人员已经在做的事情编写成实际语言语法(定义对象,继承其他对象定义等等)。

因此,ES6类语法真正让开发人员更方便。它并没有从根本上改变Javascript的功能或工作方式。

  

在ES6之前,javascript无法创建类(我知道它有自己创建构造函数的方式......)并且它是一种基于原型的语言。

这句话有点误导。 ES6的工作方式与ES5相同。它仍然使用原型。 class关键字中的对象定义的创建方式与它们在ES5中的相同(使用原型)。我们现在有一个内置的语法,而不是手动声明构造函数,然后向原型添加方法。因此,有一些语法改进,但一旦声明对象,它的工作方式就没有根本性的改变。

  

现在,在添加类声明和新的继承方式后,它可以被认为是基于类的语言,如Java和C ++吗?

不是真的。它仍然是基于原型的语言,甚至class声明最终都会构建原型。我会说Javascript非常面向对象(一直都是)。在这方面我不会尝试将它与Java和C ++进行比较,因为它有点像比较苹果和橘子。他们以不同的方式处理事情并且没有绝对的衡量标准"更多"或者"较少"基于阶级的,客观的或有用的。

我建议您花时间研究您所知道或正在考虑学习的不同语言的优点和缺点,以便了解它们最适合的用途,并且不要花时间去弄清楚哪些是&#34 ;更"或者"更好"比另一个。它们非常不同,可以用来做各种各样的事情。根据个人的优势,有些是工具包中更好的工具,而不是其他工具。

相关问题