了解JavaScript面向对象

面向对象是什么

全称(Object Oriented Programming),简称OOP。

面向对象编程:用抽象方式创建基于现实世界模型的一种编程模式

概念

⑴对象。

对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

⑵对象的状态和行为。

对象具有状态,一个对象用数据值来描述它的状态。

对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中

⑶类。

具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。

类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。

类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

⑷类的结构。

在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般 — 具体结构关系,整体 — 部分结构关系。

①一般 — 具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。

②整体 — 部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。

⑸消息和方法。

对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。

类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。

特征
封装

封装就是事物抽象为类,把对外接口暴露,将实现和内部数据隐藏。

就按照要求使用并得到对应得结果,而不需要知道其真实的执行原理是怎么样的

由两部分组成:

  1. 相关的数据(用于存储属性)
  2. 基于数据所能做的事情
继承

继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

继承通常是指类于类之间的关系。如果两个类都有相同的属性和方法,那么可以让一个类继承于另一个类,这样就不需要再前者再次定义同样的属性和方法。

创建一个或多个类的专门版本类称为继承。

创建的专本版本的类通常叫做子类,另外的类通常叫做父类。

继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。

多态(多形性)

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

多态性允许每个对象以适合自身的方式去响应共同的消息。

多态性增强了软件的灵活性和重用性。

JavaScript是基于原型的面向对象语言,而不是基于类

构造函数

又称 构造器对象模板,是对象中的一个方法,在实例化构造器被调用。

因为我们一次创建一个对象,里面很多的属性和方法是大量相同的我们只能复制

因此我们可以利用函数的方法重复这些相同的代码我们就把这个函数称为构造函数

又因为这个函数不一样,里面封装的不是普通代码,而是对象

构造函数就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面

构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来 ,然后封装到这个函数里面。

创建对象的三种方法:

  1. 使用new Object方法,用根对象Object,来创建一个对象。

    var obj = new Object();

  2. 字面量

    var obj = { }

  3. 使用构造函数来创建,使用function关键字,加上对象名称来创建。

    构造函数顾名思义就是生成一个函数

    可以这么理解 很多对象属性和方法都一样,这样可以封装成一个对象,方便快捷,使用简单, 构造函数首字母要大写

    格式如下:

    function 函数名称(){

    this.属性 = ‘值’

    this.方法 = function(){

    …内容 方法等等

    }

    }

    new 函数名称();

属性

实际上就是对象的变量。

一个对象可以包含多个属性,定义构造函数的书香是使用this关键字。

方法

构造函数的方法和构造函数的属性相似,,不同的是 方法是一个函数(或像函数一样被定义)。

定义构造函数的方法时使用this关键字。

this关键字

  • 全局范围内:this关键字会指向全局对象
  • 构造函数内:this关键字会指向新创建的对象
  • 构造函数的方法内:this关键字会指向当前对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值