面向对象思想
面向过程
- 解决问题的过程,按步骤进行,第一步做什么,第二步做什么,一步一步完成
面向对象
- 找具有解决问题功能的对象,调用其功能,完成任务。如果对象不存在,则创建对象。
面向对象与面向过程
- 面向过程就是亲力亲为,事无巨细,面面俱到,步步紧跟,有条不紊
- 面向对象就是找一个对象,指挥得结果
- 面向对象将执行者转变成指挥者
- 面向对象不是面向过程的替代,而是面向过程的封装

创建对象方式
简单方式new Object

字面量方式

工厂函数

构造函数
更优雅的工场函数-构造函数

解析构造函数代码的执行


构造函数示例

面向对象小案例: 点击按钮改变区块颜色


小知识点

原型对象prototype
- 实例对象:new语句调用构造函数创建的对象
- 原型对象引入
-
- 每个构造函数都有一个prototype属性指向它的原型对象,Person.prototype
-
- 作用: 公共的属性和方法定义在原型对象上,节省内存空间
Person.prototype.say = function(){}
-
- 原型对象、构造函数与实例对象
实例对象v都有一个隐式原型__proto__指向他的原型对象


属性和方法搜索原则
面向对象编程思想
1. 找解决问题对象,如果对象存在调用其功能解决问题
2. 对象不存在,创建对象
3. 构造函数方式创建对象
- 构造函数: 对象私有的属性和方法定义在构造函数中
- 原型对象: 公共的属性和方法定义在原型对象上
对象成员(属性和方法)搜索原则:
先在实例对象上找,如果找不到,沿着隐式原型__proto__到原型对象上查找
原型对象简写
function Person(name, age) {
this.name = name
this.age = age}
Person.prototype = {
constructor: Person,
type: '中国人',
say: function () {
console.log('说话 say')
},
eat: function () {
console.log('吃饭')
},
}
let p1 = new Person('jack', 18)
p1.say()
p1.eat()
console.dir(Person.prototype)
内置对象原型
Object Array Date ....
new Object() Object.prototype
new Array() Array.prototype
new Date() Date.prototype
原型方法中的this指向调用该方法的对象
案例
切换区块颜色

选项卡
