为什么需要构造函数?因为我们一次创建一个对象,里面很多的属性和方法是大量相同的,代码就显得有些冗余,所以我们可以利用函数的方式,重复这些相同的代码,我们把这个函数称为“构造函数”,又因为这个函数不一样,里面封装的不是普通代码,而是“对象”,构造函数就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面
构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它与new运算符一起使用,我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面
上代码
//构造函数的语法格式
function 构造函数名(){
this.属性 = 值;
this.方法 = function(){}
}
new 构造函数名();
1.构造函数名的首字母建议大写,便于区分
2.构造函数不需要 return 就可以返回结果
3.调用构造函数时必须使用 new
4.只要new 构造函数名() 调用函数就会创建一个对象
5.属性和方法前面必须添加 this
// 假设我们现在需要创建两个学生对象,那他们共有的属性是名字,年龄,性别,也有方法
// 既然是共有的那就可以使用构造函数进行封装减少代码冗余
// 构造函数
function Student(uname, age, sex){
this.name = uname
this.age = age
this.sex = sex
this.study = function(car){
console.log(car)
}
}
// 对象,是一个具体的事物,通过 new 关键字创建对象实例化
let th = new Student('拓海',18,'男') //调用函数返回的是一个对象
th.study('AE86')
console.log(typeof th)
let lj = new Student('凉介',19,'男')
console.log(lj.name)
console.log(lj['sex'])
new 在执行时会做的四件事
1.new构造函数可以再内存中创建一个空对象
2.构造函数中的this指向的是构造函数new出来的实例对象
3.执行构造函数里面的代码,给这个新对象添加属性和方法
4.返回这个新对象(所以构造函数里面不需要return)
普通函数:就是普普通通的函数,直接上代码吧
function fn(){
alert("拓海");
}
fn();
构造函数与普通函数的区别:
1.普通函数不需要用new关键字调用而构造函数需要
2.普通函数可以用return,构造函数会返回一个新对象所以构造函数不需要return
3.this的指向问题,普通函数this指向的是window,构造函数this指向的是构造函数new出来的实例对象
4.函数命名建议首字母大写,与普通函数区分开(只是建议)