jaksgfdshkv

面向对象

对象到底是什么,我们可以从两个层次来理解。

(1) 对象是单个事物的抽象。

一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。

(2) 对象是一个容器,封装了属性(property)和方法(method)。

属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。

在实际开发中,对象是一个抽象的概念,可以将其简单理解为:数据集或功能集。

ECMAScript-262 把对象定义为:无序属性的集合,其属性可以包含基本值、对象或者函数。严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。

提示:每个对象都是基于一个引用类型创建的,这些类型可以是系统内置的原生类型,也可以是开发人员自定义的类型。

  1. 、什么是面向对象

面向对象不是新的东西,它只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维护性。

面向对象编程 —— Object Oriented Programming,简称 OOP ,是一种编程开发思想。它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。

在面向对象程序开发思想中,每一个对象都是功能中心,具有明确分工,可以完成接受信息、处理数据、发出信息等任务。因此,面向对象编程具有灵活、代码可复用、高度模块化等特点,容易维护和开发,比起由一系列函数或指令组成的传统的过程式编程(procedural programming),更适合多人合作的大型软件项目。

  1. 面向对象的特征

封装性

继承性

多态性

回顾创建对象的四种方法

回顾创建对象的四种方式

字面量

new Object()

工厂模式

构造函数

构造函数和实例对象的关系

(1)、解析构造函数代码的执行

创建一个实例对象,必须使用 new 操作符。以这种方式调用构造函数会经历以下 4 个步骤:

1、创建一个新对象

2、将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象)

3、执行构造函数中的代码

4、返回新对象

(2)、constructor属性

对象的 constructor 属性最初是用来标识对象类型的 

可以通过实例的 constructor 属性判断实例和构造函数之间的关系

构造函数实例化对象的constructor属性指向的是构造函数本身

要检测对象的类型,使用 constructor操作符更可靠一些,返回true为对象

例如:obj.constructor == Object

(3)、instanceof关键字

如果要检测对象的类型,还是使用 instanceof 操作符更可靠一些,返回true为对象

obj instanceof Object

总结:

构造函数是根据具体的事物抽象出来的抽象模板

实例对象是根据抽象的构造函数模板得到的具体实例对象

每一个实例对象都具有一个 constructor 属性,指向创建该实例的构造函数

(1)、原型

更好的解决方案: prototype

Javascript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

这也就意味着,我们可以把所有对象实例需要共享的属性和方法直接定义在 prototype 对象上。

任何函数都具有一个 prototype 属性,该属性是一个对象。

构造函数的 prototype 对象默认都有一个 constructor 属性,指向 prototype 对象所在函数。

 

posted on 2021-12-12 17:42  jaksgfdshkv  阅读(43)  评论(0编辑  收藏  举报

导航