javascript里面有类吗?

JavaScript06

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关键字了,但是归根到底类还是一个语法糖,其底层还是基于原型继承的。

弱类型语言也是有类型的。或者说,任何计算机语言都是要有类型的。

基本数据类型有:number、string、boolean、undefined、null

引用类型有:object、function

var num = 123

console.log(typeof num)//number

var str = 'string'

console.log(typeof str)//string

var bool = true

console.log(typeof bool)//boolean

var undef = undefined

console.log(typeof undef)//undefined

var nul = null

console.log(typeof nul)//object。因为null代表对象是空的情况。

自动类型转换

"10.0"%"5"//结果是0,string类型自动类型转换为number类型

!0//结果是true,number类型自动转换为boolean类型

"10.0" + 5//结果是"10.05",number类型自动转换为string类型

1 + true//结果是2,boolean类型自动转换为number类型。