1.我们先来理解构造函数
构造函数,就是一种函数,是专门用于生成对象的函数,生成的对象,称为实例化对象。
构造函数分为两种,一种是JavaScript程序定义好的构造函数,称为内置构造函数,一种是程序员自己定义的构造函数,称为自定义构造函数。
构造函数和普通函数的区别
1,构造函数一定要和 关键词 new 一起使用
new 关键词具有特殊的功能,
会自动的给 构造函数中 定义一个对象,并且返回这个对象
我们只要对这个对象设定属性,设定方法就可以了
2,构造函数为了和其他函数区别
语法规范规定,构造函数,函数名称,第一个字母必须大写,使用大驼峰命名法
3,构造函数,给对象定义属性和方法的语法,与一般函数不同
2.ES5构造函数的用法
<script>
function Fun1(name,age){//创建实例化对象
this.name = name;//定义属性
this.age = age;
}
Fun1.prototype.f1 = function(){//定义实例化对象中的方法
console.log(this.name , this.age);
}
// prototype 是每个函数本身就具有的一个特殊的属性
// 可以在这个特殊的属性中,存储数据和函数
const obj1 = new Fun1('张三',18);//通过构造函数创建实例化对象
console.log(obj1);
obj1.f1();//调用实例化对象中的方法
</script>
ES5的构造函数有一些问题
最大的问题,就是定义 prototype 是在函数之外定义的
调用构造函数,生成实例化对象,一定要在定义 prototype 之后
否则生成的实例化对象,只有属性没有函数方法
3.ES6构造函数class的用法
ES6中,新增语法形式 class 类,是一种新的定义构造函数的语法
作用和原理与ES5语法完全相同,只是语法格式和书写方式不同
<script>
class Fun2{//封装类
constructor(name,age){//构造器用来存储构造函数的参数
this.name = name;
this.age = age;//定义属性
}
f2(){//定义方法
console.log(this.name , this.age);
}
}
const obj2 = new Fun2('李四',20);//生成实例化对象
console.log(obj2);
obj2.f2();//调用实例化对象中的方法
</script>