构造函数
使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法
当对象被实例化后,构造函数会立即执行它所包含的任何代码
一般我们创建一个对象,最直接的方法就是var object{属性,方法}。最简单最方便。但是这样有一个缺点,就是如果要创建很多的对象,如果一个一个的创建的话,会很繁琐,重复的工作太多了。这时候就可以使用构造函数。
创建构造函数
对象有属性和方法,如果多个函数的属性和方法均相似,我们就可以将其归为一个类,使用的时候,就可以直接调用。
//创建类
//构造函数的函数名首字母要大写
function St(name,sex,age){
this.name=name;
this.sex=sex;
this.age=age;
}
St.prototype.run=function(){
console.log("we are students")
}
//创建函数
var Liming=new St("Liming","man","20")
var Hanmeimei=new St("Hanmeimei","female","21");
console.log(Limming.name)//Liming
console.log(Hanmeimei.age)//21
console.log(Liming.run())//we are students
构造函数的继承性
我们想创建一个新的类,使新的类可以调用之前的类的属性和方法
function Te(name,sex,age){
//调用St类的属性
St.apply(this.arguments);
}
Te.prototype=Object.create(St.prototype);//调用St类的方法
var Jack=new Te("Jack","man","30");
console.log(Jack.sex)//man
实际上,Te类是St类的子类,是父子关系,子类可以继承父类的元素和方法。
当然,子类的属性和方法不可能都和父类一样,子类也会有专属于自己的属性以及方法。要设置专属属性和方法,很简单,直接在构造函数内添加就行了
function Te(name,sex,age,height){
St.apply(this.arguments);
//创建专属属性
this.height=height
}
Te.prototype=Object.create(St.prototype);
//创建专属方法
Te.prototype.teach=function(){
conslole.log("I'm a teacher")
}
var Jack=new Te("Jack","man","30","180");
console.log(Jack.sex)//man
console.log(Jack.height)//180
console.log(jack.teach())//I'm a teacher