JS之构造函数讲解
1,构造函数概念
- 在es6之前,对象不是基于类创建的,而是用一种称为构造函数的特殊函数来定义对象和它们的特征。
- 当需要很多很多对象时,而这些对象又有相同的属性和方法。这时需要把它抽离出来,再大量的生成对象,这时候就需要构造函数。
- 通过 new 函数名 来实例化对象的函数叫构造函数。
- 构造函数的名称首字母需要大写(规范)。
2,定义构造函数
function Student(name, age) {
this.name = name
this.age = age
this.study = function() {
console.log(this.name + '在学习')
}
}
// 实例化一个对象zs
var zs = new Student('张三', 18)
console.log(zs) // Student {name: "张三", age: 18, study: ƒ}
// 调用对象中的方法
zs.study()
===========================注意 =============================
实例成员就是构造函数内部通过this添加的成员 name age study就是实例成员
实例成员只能通过实例化的对象来访问
3,在构造函数中 new 关键字做了什么操作?
- 创建一个新对象
- 将构造函数的作用域赋值给新的对象(因此this指向了新对象)
- 给这个新对象添加属性和方法
- 返回新对象
4,构造函数和普通函数的区别,
- 调用方式不一样
a. 普通函数的调用方式:直接调用 person()即可。注意:只要这个函数没有使用new操作符,那它始终是一个普通函数,和首字母大写没有关系。
b.构造函数的调用方式:需要使用new关键字来调用 new Person(); - 返回值不一样
a. 普通函数可以使用return进行返回;
b.构造函数不需要return返回。因为构造函数会马上创建一个新对象,并将该新对象作为返回值返回。