面向过程编程思想: 只关心数学逻辑
面向对象编程思想: 这种将生活逻辑映射到我们程序中编程思想叫做面向对象编程思想
- 找出实体
- 分析实体和属性功能
- 让实体之间相互作用
例:有一辆车60km/h,跑在一条1000km的路上,多久可以跑完?
/*var hours = 1000 / 60console.log(hours)*/var car = {speed: 60run: function(road){road.length / this.speed}}var road = {length: 1000}var hours = car.run(road)console.log(hours)
语法
类 : 一类具有相同食物特征的概念
对象: 具体的某一实例,唯一的某一个个体
类 对象
电脑 你面前的那台
数据结构
基本数据类型(只能存储单个的值) => 数组(处理批量的数据) => 对象(既能够存储数据,又能够存储函数)
工厂模式
1. 原料1. 加工1. 出厂
【注】凡是满足上述三个步骤创建对象的函数,我们把它叫做工厂方法
如果,我们某一个函数,使用new运算符去调用
- 当前函数中的this只想新创建的对象
- 自动去完成1、原料和3、出厂操作
这种通过new调用函数,我们把它叫做构造函数,构造函数可以创建对象
【注】构造函数一般情况下首字母大写
function createPerson(name,sex){//原料var obj = new Object()//加工obj.name = 'name',obj.sex = 'sex',obj.showName = function(){console.log(`我的名字叫${this.name}`)}obj.showSex = function(){console.log(`我的性别是${this.sex}`)}//出厂return obj}var p1 = createPerson('blue','男')p1.showName()p1.showSex()var p2 = createPerson('red','女')p2.showName()p2.showSex()console.log(p1.showName === p2.showName)//fasle/*1. 没有new2. 每一个新创建出来的对象都独有一套函数*/
prototype 原型对象
用在构造函数上,我们可以给构造函数的原型prototype,添加方法
- 如果我们将方法添加到构造函数的原型prototype 对象上
- 构造函数构造出来的对象共享原型上所有方法 ```javascript var arr1 = [10,20,30,40,50] var arr2 = [1,2,3,4,5]
Array.prototype.sum = function() { var res = 0; for (var i = 0; i < this.length; i++){ res += this[i] } return res }
console.log(arr1.sum()) console.log(arr2.sum()) console.log(arr1.sum === arr2.sum) // true
```javascriptfunction Person(name,sex){this.name = namethis.sex = sex}Person.prototype.showName = function(){console.log(`我的名字是${this.name}`)}Person.prototype.showSex = function(){console.log(`我的性别是${this.sex}`)}var p1 = new Person ('blue','男')p1.showName()p1.showSex()var p2 = new Person('red','女')p2.showName()p2.showSex()console.log(p1.showName === p2.showName)//fasle
面向对象的语法
面向对象,继承、封装(封装构造函数)、多态
