1 构造函数的定义
在JS中, 没有类(class)的概念, 主要是通过构造函数
来模拟的.
语法
function 构造函数名 () {// 函数体}
- 使用
function
关键字表示定义一个构造函数 - 构造函数名一般首字母大写
示例
function Person() {}
通过以上方式就可以定义一个Person构造函数, 相当于定义好了一个Person类

2 构造函数的作用
1) 通过构造函数实例化对象
在JS中, 我们通过构造函数(类)来实例化对象
语法
new 构造函数名()
示例
// 一. 定义一个构造函数function Person() {}// 二. 实例化一个对象, 赋值给变量pvar p = new Person();console.log(typeof p); // object
以上代码
- 通过new关键字, 产生了一个对象, 并赋值给变量p
- 通过
typeof p
测试变量p的类型为object, 说明p是一个对象

2) 在构造函数中定义属性
构造函数规定了由该类实例化出来的对象应该包含哪些属性
比如, 由学生类实例化出来的学生对象都应该有姓名
, 年龄
这些属性
function Student () {this.uname = null;this.age = null;}
在构造函数的内部, 我们通过this.属性名
的方式来定义属性
在这里, 大家先把这个看作固定写法, 后面我们再具体分析
构造函数虽然可以规定实例对象应该包含哪些属性, 但是并不能确定实例对象的属性值
比如 人类都应该有名字这个属性, 但是具体叫什么名字, 只有在一个人出生的时候才去确定
因此, 在实例化对象的时候, 需要将具体的数据
传递给构造函数
// 一. 定义一个学生类function Student(n, a) {this.uname = n;this.age = a;}// 二. 实例化对象var stu = new Student('xiaoming', 20);
重要结论
构造函数主要完成属性的初始化!!!

练习
一. 通过构造函数Phone定义一个手机类, 包含型号(type), 价格(price), 颜色(color), 屏幕大小(size)
二. 实例化两个对象
- 一个iphone对象, 型号: iphoneX, 价格: 6999, 颜色: 土豪金, 屏幕大小: 5.8英寸
- 一个huawei对象, 型号:p30 pro, 价格: 5988, 颜色: 极光蓝, 屏幕大小: 6.1英寸
参考答案
// 一. 定义手机类function Phone(type, price, color, size) {// 属性this.type = type;this.price = price;this.color = color;this.size = size;}// 二. 实例化对象var iphone = new Phone('iphoneX', 6999, '土豪金', '5.8英寸');var huawei = new Phone('p30 pro', 5988, '极光蓝', '6.1英寸');

作业
一.通过构造函数Hero定义一个英雄类, 包含血量(HP), 类型(type), 攻击力(attack)
二.实例化两个对象
- 一个lianpo对象, 血量:700, 类型: 力量型, 攻击力: 70
- 一个houyi对象, 血量:300, 类型: 射手, 攻击力: 130
3 小结
- 通过构造函数定义类(规定应该包含哪些属性名)
- 通过new实例化对象(在实例化时, 确定属性值)
- 构造函数主要完成属性的初始化