【修真院web小课堂】简述js中的面向对象编程

1.object类型

到目前为止,我们看到的大多数引用类型值都是 Object 类型的实例;而且, Object 也是 ECMAScript 中使用最多的一个类型。虽然 Object 的实例不具备多少功能,但对于在应用程序中存储 和传输数据而言,它们确实是非常理想的选择。

2.继承

继承的基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法.

3.构造函数(constructor )和 原型对象(prototype) 以及实例之间的关系

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型 对象的内部指针。

当我们创建一个函数,系统就会为这个函数自动分配一个prototype指针,指向它的原型对象。并且可以发现, 这个原型对象包含两个部分(constructor 和 __proto__)其中constructor指向函数自身。 (这里形成了一个小闭环)

 当我们将该函数作为模版创建实例(new方法)的时候,我们发现创建出的实例是一个与构造函数同名的object, 这个object是独立的,他只包含了一个__proto__指针(实例没有prototype,强行访问则会输出undefined), 这个指针指向上面提到的构造函数的prototype原型对象。

这时候我们发现三者形成了一个大"闭环"。之所以加上引号,因为构造函数和实例之间无法直接访问, 需要通过__proto__指针间接读取。

深度思考:

1.为什么要面向对象编程?

答:面向对象是为了解决系统的可维护性,可扩展性,可重用性

2.面向对象有什么特点?

答:封装:把属性和方法储存在到对象内部
       继承:子类继承父类,可以继承父类的方法及属性,实现了多态以及代码的重用,因此也解决了系统的重用性和扩展性,但         是继承破坏了封装.
       多态:接口的多种不同的实现方式即为多态。接口是对行为的抽象.方法不变,通过接收的参数变化,来实现多态。

3.面向对象和面向过程有何区别?

答:首先我们来认识下,什么是面向过程?如果咬文嚼字的话可以这样来理解,面向过程就是面向解决问题的过程进行编程。仔细思考一下,我们在学习和工作中,当我们去实现某项功能或完成某项任务时,是不是会不自觉的按部就班的罗列出我们要做的事情?(如果没有,建议以后试着步骤化解决问题)。而当我们按着我们罗列的步骤去解决问题时,实质上就是按照面向过程的思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题就是面向过程。

传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化!实现步骤如下:
将要实现的功能描述为一个从开始到结束按部就班的连续的步骤(过程);
依次逐步完成这些步骤,如果某一步的难度较大,又可以将该步骤再次细化为若干个子步骤,以此类推,一直到结束得到想要的结果;
程序的主体是函数,一个函数就是一个封装起来的模块,可以实现一定的功能,各个子步骤往往就是通过各个函数来完成的,从而实现代码的重用和模块化编程!

讨论完了面向过程,我们再来认识下面向对象。所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界,按照现实世界中的逻辑去处理一个问题,分析问题中参与其中的有哪些实体,这些实体应该有什么属性和方法,我们如何通过调用这些实体的属性和方法去解决问题。


现实世界中,任何一个操作或者是业务逻辑的实现都需要一个实体来完成,也就是说,实体就是动作的支配者,没有实体,就肯定没有动作发生!

相关链接:

PPT:https://it-xzy.github.io/WEB-NEW/2018-7-03-C-js4-tds.html
腾讯视频:https://v.qq.com/x/page/y0710k8mwob.html

猜你喜欢

转载自blog.csdn.net/tianxintiandisheng/article/details/80935644
今日推荐