构造函数
构造函数就是一个普通的函数,但是具有着自己的特征和用法。
function People(name, age){
this.name = name
this.age = age
}
var man1 = new People('张三',14)
var man2 = new People('李四',15)
man1.name // ‘张三’
man2.name // ‘李四’
上面代码中,People
就是一个构造函数,为了加以区分,通常构造函数名字第一个字母大写。
构造函数的特点:
- 函数体内使用
this
关键字,代表了所要生成的对象实例。 - 生成对象的时候,必须使用new命令。
new
new 命令的作用就是执行构造函数,生成一个实例对象。
function People(name, age){
this.name = name
this.age = age
}
var o = new People('张三',20)
o.name // ‘张三’
o.age // ‘20’
new命令原理
- 创建一个空对象,作为将要返回的对象实例。
- 将这个空对象的原型指向构造函数的prototype属性。
- 将这个空对象赋值给函数内部的this关键字。
- 执行构造函数内部代码。
如果构造函数内部有
return
语句,return
语句后面如果是一个对象,new命令会返回return
后面的指定对象;如果不是对象,那么始终返回this
对象。
new命令始终返回一个对象,要么是return指定对象,要么就是实例对象。