1)什么是js构造函数
简单来说JavaScript里面能通过new 关键词创建一个实例的函数,我们称之为构造函数。
2)构造函数的作用
当我们处理一些重复性工作时就常用到构造函数,举个例子我要录入每一个员工的信息:
p1 = { name: 'coco', age: 28, sex: 'boy' };
p2 = { name: 'lili', age: 20, sex: 'girl' };
p3 = { name: 'gang', age: 18, sex: 'boy' };
...
可以看到每一个员工对象都共同的属性name、age、sex如果我一个个写就比较麻烦,这时就可以使用构造函数帮我们完成。
function Foo(name,age,sex){
this.name = name;
this.age= age;
this.sex=sex;
this.say=function(){
console.log("my name is "+ this.name+" ,age is "+ this.age+ ", and sex is "+ this.sex)
}
}
const p1 = new Foo('coco', 28, 'boy')
const p2 = new Foo('lili', 20, 'girl')
const p3 = new Foo('gang', 18, 'boy')
p1.say()
//my name is coco ,age is 28, and sex is boy
3)构造函数执行过程
function Foo(name,age,sex){
this.name = name;
this.age= age;
this.sex=sex;
this.say=function(){
console.log("my name is "+ this.name+" ,age is "+ this.age+ ", and sex is "+ this.sex)
}
}
const p1 = new Foo('coco', 28, 'boy')
- 通过new操作符实例化一个新的空对象,实质是在计算机内存中分配一个新的内存空间,我称实例p1。
- 构造函数内部this指向实例p1。
- 执行构造函数内部代码块,给this添加属性,和方法,实质就是将给实例p1添加属性和方法。
- 默认返回this,就是实例化对象p1。
4)构造函数返回值
- 构造函数默认返回this对象。
function Foo(){
this.name = 'coco';
}
const p4 = new Foo()
console.log(p4)
//{name: "coco"}
- 构造函数也可返回JavaScript引用类型(array,object,function)。
function Foo(){
this.name = 'coco';
return {name:'lili'}
}
const p4 = new Foo()
console.log(p4)
// {name:'lili'}
- 构造函数返回非JavaScript引用类型时,还是返回this对象。
function Foo1() {
this.name = 'coco';
return 'lili'
}
const p4 = new Foo()
console.log(p4)
// {name: "coco"}