1、对象是什么?
面向对象编程(Object Oriented Programming
,缩写为 OOP
)是目前主流的编程范式。它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。
每一个对象都是功能中心,具有明确分工,可以完成接受信息、处理数据、发出信息等任务。对象可以复用,通过继承机制还可以定制。因此,面向对象编程具有灵活、代码可复用、高度模块化等特点,容易维护和开发,比起由一系列函数或指令组成的传统的过程式编程(procedural programming
),更适合多人合作的大型软件项目。
那么,“对象”(object
)到底是什么?我们从两个层次来理解。
(1)对象是单个实物的抽象。
一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。
(2)对象是一个容器,封装了属性(property
)和方法(method
)。
属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal
对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。
上面这一段是大佬阮老师对面向对象的描述,不理解的同学可以看一下我下面举得简单的例子:
面向对象的思路在我们生活中实际上很普遍。以开车为例,开车时司机拧钥匙、挂挡、踩油门,车开始启动
面向过程的写法
拧钥匙()
联通电路()
火花塞点火()
活塞运动()
内燃机启动()
司机挂挡()
变速箱工作()
踩油门()
活塞运动加快()
刹车解除()
连杆传输动力到轮子()
轮子运转()
看起來,步骤很繁琐,很复杂!
而面向对象的思路:一次性实现所有的流程
你可以这样操作:
Car.拧钥匙()
Car.挂挡()
Car.踩油门()
是不是简单了很多,
面向对象的思路:把某个功能看成一个整体(对象),通过调用对象的某个方法来启动功能。在用的时候不去考虑这个对象内部的实现细节,在去实现这个对象细节的时候不用管谁在调用
面向对象的写法不仅更简洁,而且更可控。假设有两个车要启动,用面向过程的写法代码无法维护,而面向对象只需要:
Car1.拧钥匙()
Car1.挂挡()
Car1.踩油门()
Car2.拧钥匙()
Car2.挂挡()
Car2.踩油门()
这样写真的便于维护,各个功能之间互不干扰,降低耦合!
JS 中的对象
js对象是一系列key:value的几何 例:
var obj = { a: 1, b: 2}
var person = {
name: 'hunger',
sayName: function(){
console.log('My name is hunger')
}
}
我们可以通过对象.属性来获取对应属性的值!
console.log(person.name)
person.sayName()
但假设我们定义一个函数
return a + b
}
console.log(sum.name) // => sum
console.log(sum.length) //2
会发现,函数 sum
也有很多属性。
从这个角度看,函数也是js
对象的一种。
未完待续..........
本文参考 : 阮一峰 饥人谷若愚
网友评论