javascript是弱类型,直译式的面相对象编程语言。
在之前我们说过
var a = 123; 在这里a是整数 但是我们可以给a重新复制为 a="你好"; 在这个过程中变量a 的值发生了改变,对应的类型也不再是数值类型,我们称这种特性为弱类型。
直译式指的是不需要通过其他方式,浏览器可以直接编译解析的方式为直译式。
那么面相对象是什么呢oo?
简单来说 面相对象要拆分为两个不同的单词进行描述 面相-对象 面相是个很好理解的单词,就是对着,面对 我们可以说面向世界,面向未来 ,这里面主要的就是对象这个词语。
面向对象:对现实世界的理解与抽象,是计算机编程技术发展到一定阶段的产物。
ok 上诉描述有点抽象,我们来举个栗子
大家都知道计算机最终的目的是通过电脑来解决现实中的事物与功能。那我们现在要用计算机来描述一个航班信息。
大家思考下,我们首先需要个飞机,然后需要一些旅客。
那在这里面我们当然不能在电脑里装一个飞机或者一堆人(二次元可以试试)。那怎么办呢?
在这里我们通过一些描述信息 如 string字符串 或number数值来描述一个真实飞机。
那在这里,我们就通过使用js的内置数据类型来描述了一个飞机的特性,那么小伙伴会有个问题~ 这里哪有对象 哪有面相? ok我们继续向下来处理。
上面的代码我们只是描述了一个简单的飞机,如果我们有两架飞机怎么办呢?
我们可以通过定义额外的变量来进行描述,当然这种方式很不理想,因为我无法确定我定义的是一个飞机还是以个拖拉机或者三轮子。这个时候就需要我们面相对象来进行登场了
----------------------------------------- 我是前戏分割线 --------------------------------------------
面向对象:通过将现实世界中具有相同属性和行为的事物抽取为一个类,一个类的实例,我们称之为对象的实例。
类:具有相同属性和行为的事物的抽象体。
对象: 一个类的具体实现和显示的真实例子。
首先我们搞清楚类的概念,什么是类?
类的概念有点抽象和空虚,比如我们可以说 小明 和 小红 是 人,那么在这个过程中, 人就是类,小明和小红就是类的实体,也就是我们常说的对象。
类具有两个特殊的实现方式,我们称之为属性和方法。
属性 :一般用来描述我们看得见摸得着的抽象。如色彩、身高、体重、名字等
方法(行为) :方法一般指动态的操作行为。比如跑步、说话、上学、写作业、泡妹纸...
类的特点:类一般是抽象而成,也就是说本身不具有实际的行动意义,需要一个实际的例子来用来对他的内部进行操作。
对象:通过关键字new或其他方式创建,继承了类的属性和行为的真实例子进行操作。
我们的编程就是定义好一个类,然后通过对实例对象的操作进行工作,这种方式就是面向对象。
大家可以想象下我们在之前接触的对象概念 如 String、Number 他们都是类的概念定义,