JS面向对象基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS面向对象基础相关的知识,希望对你有一定的参考价值。

面向对象概念

一、 编程范式

在我们编程语言里面,大致可以分为两个大类:命令式编程  声明式编程

  1. 命令式编程

所谓命令式编程,就是以命令为主,给计算机一条一条命令,计算机来按照我们给的命令原封不动的执行。

命令机器如何去做事情(how)

常见的命令式编程语言有:C语言,C++C#JavaphpRuby

从命令式编程语言又可以分为两大类:面向过程 面向对象

(1) 面向过程

就是分析解决问题所需要的步骤,然后把这些步骤一步一步实现

(2) 面向对象

所谓面向对象,就是将程序里面的模型看做一个一个的对象。对象和对象之间会产生彼此的联系。使用对象来解决问题

需要注意:就算是面向对象编程,里面也会有面向过程的步骤。

  1. 声明式编程

所谓声明式编程,就是指告诉计算机你想要什么(what),让机器去解决如何实现。

声明式编程里面也可以分为两大类:DSL 和 函数式编程

(1) DSL

DSL翻译成中文为领域专用语言(Domain Specific Language)。顾名思义,就是指某一个领域专用的语言。

常见的DSL语言有htmlCSSSQL

(2) 函数式编程

将程序里面的一些模型看做是数学里面的函数来进行计算。

二、 面向对象

  1. 什么是面向对象

首先需要搞清楚什么是对象(Object)。通俗来讲,就是东西。我们这个世界就是由各种各种的东西组成的。东西与东西之间有彼此的联系。

现实生活中我们描述一个东西,或者一个物品的时候,常常会从2个方面来进行描述

例如我要描述一个手机

首先第一个就是外观(属性):白色  5.5寸  矩形   

接下来就是从功能来进行描述:看电影 打电话  玩游戏

  1. 面向对象和面向过程的区别

面向过程的特点:由顶自下,依次执行,我们需要去考虑每一个步骤。

面向对象的特点:面向对象更加符合我们人类的思想。我们只需要找到我们需要的对象即可。

ATM机取钱

面向过程:我们需要考虑每一个步骤,例如取钱的时候金额是多少,余额是多少,用户的输入是否合法

面向对象:只需要考虑这个ATM这个对象即可

  1. 面向对象的特点

一般来讲,面向对象的特点有3个:封装,继承和多态

有些老的教材,会告诉你面向对象的特点有4个:除了上面3个以外,还多加了一个抽象

封装:就是将细节隐藏起来,不向外部暴露。例如现实生活中电视机就是一个典型的封装,无法看到内部电子元件这些细节

继承:和现实生活中一样,儿子可以继承父亲的一些东西。在程序里面子类可以继承父类。

多态:如果从语言的角度来看,就是不同对象同一方法的作用不一样。例如现实生活中,一个action这个单词对于不同的职业的人来讲,意义是不一样的。

和现实生活中一样,东西一多,按照人的思维自然就会想到分类。比如给你1万本书。我们首先会想到分类,例如分为小说类,科技类,漫画类,政治类,经济类...每一个类别下面的书都是有共同的特点的。

类和对象的关系:类是对象的一种概括,是一个抽象的东西,对象是类的一种具体实现,是一个具体的东西。

  1. 创建对象

(1) 通用编程语言产生对象的方式

对象是从类产生的。所以如果我们要获取对象,首先需要创建类

例如:PHP里面创建类和对象的方式

既然对象是从类里面实例化出来的,那么首先需要有类

接下来我们就可以从类里面产生具体的对象了

(2) JS中创建对象的方式

ES6之前,JS里面没有类的概念。所以在ES6之前都是通过函数来模拟类

模拟类的函数通常被称之为构造函数。为了区分构造函数和普通函数,有一个不成文的规定,构造函数的函数名首字母大写

对象和构造函数,以及原型对象之间的关系图(重要)

前面我们所讲述的数组,函数,数字,字符串等都有对应的构造函数。如果是通过构造函数实例化的,那么就是一个对象

对象里面有一个叫做constructor的属性,可以查看到这个对象的构造函数

在每一个构造函数里面,都有一个隐藏属性,叫做prototype,这个属性指向一个对象,这个对象就是通过构造函数实例化出来的对象的原型对象

构造函数。

 

以上是关于JS面向对象基础的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript面向对象——JS OOP基础与JS 中This指向详解

js中的面向对象基础1

JavaScript面向对象——JS OOP基础与JS 中This指向详解

JS面向对象基础

JS面向对象基础讲解(工厂模式构造函数模式原型模式混合模式动态原型模式)

javaScript面向对象基础