首页 > 代码库 > javascript面向对象

javascript面向对象

1.类与对象。

对象:“万物皆对象”。以人为例子,人类是个集体,而某一个人就是一个对象。需要和类结合起来理解。

类:指的是一个抽象的概念,物以类聚中的“类”,它是一个集合概念,是由人通过某一类事物的特点特性总结出来的。用在javascript中,就是指对象的一个集合,这类对象需要有共同的某个或某些属性和方法的。

例:比如说杯子,“杯子”就可以看做一个类,而这个类需要有一些特征。能盛水,可以供人喝水的,就叫做杯子。这是所有杯子的统一特征,也就是杯子这一类。而具体到某一个杯子,比如我就有一个喝水的杯子,而这个杯子就是一个对象。这样我们就能明显了解到,类是一个虚有的存在,你不能具体指出它在哪里,是哪个。但是对象是具体的存在,可以明确指出在哪里,是哪个。

其实类和对象很好理解,需要结合一下现实生活中的例子就可以,因为“类”与“对象”本身就是从生活中抽离出来运用到计算机语言中的概念。

2.创建对象。

在javascript中我们需要创建一个对象,需要用new关键字。下面是创建对象的两种方法。

技术分享

这种创建对象的方法是最普通方便的方法,当然也存在着一些弊端。比如说,我们需要创造50个年龄都是16岁的对象,那么我们需要写50遍obj.age=16,这会造成一大堆的代码重复。

针对这个问题,我们可以选择使用工厂模式,方法如下:

技术分享

 工厂模型创建对象本质就是一个带有参数的函数,由于javascript在esm6之前是没有类这个概念的,所以用函数的思想模拟类。在创建对象的时候加入实参就可以了。但是这种模式创建的对象依然存在弊端,比如说他没有办法给创造出来的对象增添新的属性和方法。而且对于创建出来的对象没有明确的分类,不同的工厂模型创建的对象都属于object。虽然模拟了类,但是没有类本身的特性。简单来说就是用工厂模型创建的对象,无论是创建出来的人也好,动物也好,都属于object,并没有真正意义上的将他们分别开了。

针对工厂模型的弊端,又提出了一种新的方式去创建对象,构建函数

技术分享

上面的instanceof是验证创建出来的对象属不属于Person的。实践证明,这种方法可以解决工厂模式关于分类的问题。构建函数的方法创建对象虽说可以解决对象归类的问题,但是对于内存存在着消耗的问题,所以我们需要把构建函数和工厂模型结合起来,把属性定义在工厂模式,将方法存放在构建函数中。

技术分享

得到了创建对象的最终方案。

 

简单的讲解了一下面向对象中创建对象的方法,请大神批评指正,共同进步!

javascript面向对象