javascript里面有类吗?

JavaScript014

javascript里面有类吗?,第1张

javascript有类的概念。

js里面类通过function进行定义,有些类似c++的struct定义。

代码示例:

function MyClass(){

   this.a = '2'

   this.show=function(){

      alert('1')

   }

}

var myClass = new MyClass()

alert(myClass.a)//获取属性

myClass.show()//调用类方法

原因比较多,我个人分析认为主要有以下两大方面的原因

历史遗留原因

javascript在当时设计之初,是带着商业竞争目的的,js前身为livescript,主要是使得浏览器初步具备客户端能力,因此并不是特别完善。

网页端js开发在相当一段时间内,由于浏览器的js解释引擎性能并不高,而且网络带宽也比较小,因此绝大多数站点的代码规模并不大,主要针对页面内容一些简单交互逻辑,在此前提下,浏览器厂商以及工业界都没有强大的动力去实现面向对象版本的js。

技术实现原因

考虑到到网页环境的特殊性,使用原型继承而不是类继承的方式,更节约内存空间,而且解释器的实现更为简单。

js开源界在不断的技术积累中,开发者已经逐渐适应了没有类的js开发模式,在js中实现真正的类反而显得有些鸡肋。

最后:虽然现在ES6标准中已经有class关键字了,但是归根到底类还是一个语法糖,其底层还是基于原型继承的。