构造函数

使自己的对象多次复制,同时实例根据设置的访问等级可以访问其内部的属性和方法

当对象被实例化后,构造函数会立即执行它所包含的任何代码

一般我们创建一个对象,最直接的方法就是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

END


PureView
440 声望28 粉丝