什么是对象
ECMAScript-262 把对象定义为:无序属性的集合,其属性可以包含基本值、对象或者函数。
什么是面向对象
面向对象编程 —— Object Oriented Programming,简称 OOP ,是一种编程开发思想。
它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。
面向对象与面向过程对比
-
面向过程就是亲力亲为,事无巨细,面面俱到,步步紧跟,有条不紊
-
面向对象就是找一个对象,指挥得结果. 面向对象将执行者转变成指挥者. 面向对象不是面向过程的替代,而是面向过程的封装
// 面向过程
// 定义学生的对象
var std1 = {name: "Bob", score: 89};
var std2 = {name: "Mike", score: 98};
// // 封装一个打印学生成绩的函数
function printScore(student) {
console.log("姓名:" + student.name + "成绩:" + student.score);
}
// // 具体调用函数打印出对应成绩
printScore(std1);
printScore(std2);
// 面向对象
// 首先考虑的不是整个流程,而是将一个学生当成一个对象,对象有两个属性存储姓名和成绩,并且对象自己有打印成绩的功能,将所有跟学生有关的属性和行为都封装到对象身上
// 在这个过程,我们已知会由多个类似的对象,可以利用构造函数的方法先进行封装,然后创建单独的对象
// 抽象所有的数据行为成一个模板(Class)
function Student(name,score) {
this.name = name;
this.score = score;
this.printScore = function () {
console.log("姓名:" + this.name + "成绩:" + this.score);
};
}
// 根据模板创建具体的实例对象(Instance)
var std1 = new Student("Bob",90);
var std2 = new Student("Mike",98);
// 调用实例对象自己的方法
std1.printScore();
std2.printScore();
面向对象的特性
• 封装性
• 继承性
• [多态性]抽象
总结
在面向对象程序开发思想中,每一个对象都是功能中心,具有明确分工,可以完成接受信息、处理数据、发出信息等任务。
因此,面向对象编程具有灵活、代码可复用、高度模块化等特点,容易维护和开发,比起由一系列函数或指令组成的传统的过程式编程(procedural programming),更适合多人合作的大型软件项目。
面向对象的设计思想
• 抽象出 Class(构造函数)
• 根据 Class(构造函数) 创建 Instance(实例)
• 指挥 Instance 得结果