Javascript 面向对象编程(一)

目的

  1. 什么是面向对象编程
  2. 复习关键字new并且理解它所做的四件事
  3. 在我们的代码中使用构造函数来优化我们得代码
  4. 使用call和apply来重构构造函数

面向对象编程的定义

  1. 基于对象概念的编程模式
  2. 这些对象是由类创建的,我们可以把类想象成一个蓝图,把这些对象叫做类的实例
  3. 尽量让类抽象化和模块化

JavaScript中的面向对象编程

JavaScript 中没有内置的类,但是我们可以用函数和对象去模拟

1. 创建对象

想象我们要创建一些house对象,他们都有 bedrooms, bathrooms, numSqft 属性

解决办法 创建一个函数来构建这些类似的“房子”对象,而不是创建无数个不同的对象

1.构造函数

让我们使用一个函数作为每个房子应该是什么的蓝图——我们把这些函数称为“构造函数”

注意一些事:

  • 函数名的大小写
  • 关键字this!!!
  • 我们将属性附加到关键字“this”上。我们希望关键字“this”指的是我们将从构造函数函数中创建的对象,我们该如何做呢?

2.使用构造函数创建对象

为什么不起作用!!

  • 我们没有从函数中返回任何东西所以我们的House函数返回没有定义的
  • 我们没有显式地绑定关键字'this'或将它放在声明的对象中。这意味着关键字“This”的值将是全局对象,这不是我们想要的!

解决办法
使用关键字new

思考关键字new做了什么

  • 首先, 关键字new创建了一个新的空对象
  • 然后,它把关键字this设置到了这个空对象上
  • 添加一条 ‘return this’ 在函数的末尾
  • 执行原型连接操作 {它将一个属性添加到名为“proto”的空对象上,这个空对象将构造函数上的prototype属性链接到空对象上(后面会详细介绍)}

练习
为Dog创建一个构造函数,每个Dog都有姓名(name),年龄(age)属性, 还有bark方法

3.多个构造函数

分别为 Car 和 Motorcycle 创建一个构造函数

摩托车的功能有重复。有没有办法“借用”汽车功能并在摩托车功能中调用它?
使call/apply

小结一下

  • 面向对象编程是一种基于对象被一种蓝图构建的模式,我们使用面向对象写更多模块化和可共享的代码
  • 在支持OOP的语言中,我们将这些蓝图称为“类”,而从它们创建的对象称为“实例”
  • 由于我们在JavaScript中没有内置的类支持,所以我们使用函数来模拟类。这些构造函数通过使用new关键字创建对象
  • 我们可以通过call或apply来避免多个构造函数中的重复
评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复