面向过程编程思想: 只关心数学逻辑
面向对象编程思想: 这种将生活逻辑映射到我们程序中编程思想叫做面向对象编程思想

  1. 找出实体
  2. 分析实体和属性功能
  3. 让实体之间相互作用

例:有一辆车60km/h,跑在一条1000km的路上,多久可以跑完?

  1. /*
  2. var hours = 1000 / 60
  3. console.log(hours)
  4. */
  5. var car = {
  6. speed: 60
  7. run: function(road){
  8. road.length / this.speed
  9. }
  10. }
  11. var road = {
  12. length: 1000
  13. }
  14. var hours = car.run(road)
  15. console.log(hours)

语法

类 : 一类具有相同食物特征的概念
对象: 具体的某一实例,唯一的某一个个体

类 对象
电脑 你面前的那台

数据结构

基本数据类型(只能存储单个的值) => 数组(处理批量的数据) => 对象(既能够存储数据,又能够存储函数)

工厂模式

  1. 1. 原料
  2. 1. 加工
  3. 1. 出厂

【注】凡是满足上述三个步骤创建对象的函数,我们把它叫做工厂方法

如果,我们某一个函数,使用new运算符去调用

  1. 当前函数中的this只想新创建的对象
  2. 自动去完成1、原料和3、出厂操作

这种通过new调用函数,我们把它叫做构造函数,构造函数可以创建对象
【注】构造函数一般情况下首字母大写

  1. function createPerson(name,sex){
  2. //原料
  3. var obj = new Object()
  4. //加工
  5. obj.name = 'name',
  6. obj.sex = 'sex',
  7. obj.showName = function(){
  8. console.log(`我的名字叫${this.name}`)
  9. }
  10. obj.showSex = function(){
  11. console.log(`我的性别是${this.sex}`)
  12. }
  13. //出厂
  14. return obj
  15. }
  16. var p1 = createPerson('blue','男')
  17. p1.showName()
  18. p1.showSex()
  19. var p2 = createPerson('red','女')
  20. p2.showName()
  21. p2.showSex()
  22. console.log(p1.showName === p2.showName)//fasle
  23. /*
  24. 1. 没有new
  25. 2. 每一个新创建出来的对象都独有一套函数
  26. */

prototype 原型对象

用在构造函数上,我们可以给构造函数的原型prototype,添加方法

  1. 如果我们将方法添加到构造函数的原型prototype 对象上
  2. 构造函数构造出来的对象共享原型上所有方法 ```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

  1. ```javascript
  2. function Person(name,sex){
  3. this.name = name
  4. this.sex = sex
  5. }
  6. Person.prototype.showName = function(){
  7. console.log(`我的名字是${this.name}`)
  8. }
  9. Person.prototype.showSex = function(){
  10. console.log(`我的性别是${this.sex}`)
  11. }
  12. var p1 = new Person ('blue','男')
  13. p1.showName()
  14. p1.showSex()
  15. var p2 = new Person('red','女')
  16. p2.showName()
  17. p2.showSex()
  18. console.log(p1.showName === p2.showName)//fasle

面向对象的语法

面向对象,继承、封装(封装构造函数)、多态