构造函数的特点:
1、构造函数的规范,首字母大写
2、使用的this来指向即将要生成的实例对象
3、使用New来生成实例对象
栗子:
/*构造函数*/
function Student(sname,age){
this.sname=sname;
this.age=age;
this.showName = function(){
alert(this.sname);
}
}
可以通过call或者apply改变this指针的指向。
call 与 apply 的差别:
B.call(A, args1,args2);即A对象调用B对象的方法。
B.apply(A, arguments);即A对象应用B对象的方法。
栗子:
/*实现了继承*/
function Student(name){
this.name = name;
this.sname = function(){
alert(this.name);
}
}
function Hf(name){
Student.call(this,name);
}
var hf = new Hf("feifei");
hf.sname();
原型(prototype):保存多个子对象共享的成员的对象
1、每个对象都具有一个名为__proto__的属性(原型属性);
2、每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就是一个对象(JS中函数同样是对象),所以prototype同样带有__proto__属性);
3、每个对象的__proto__属性指向自身构造函数的prototype;
原型链:由各级对象的__proto__逐级向上引用形成的多级继承关系