js类式继承与原型式继承详解
本文实例为大家分享了js类式继承与原型式继承相关代码,供大家参考,具体内容如下
1.js类式继承
/*--类式继承--*/
//先声明一个超类
functionPerson(name){
this.name=name;
}
//给这个超类的原型对象上添加方法getName
Person.prototype.getName=function(){
returnthis.name;
}
//实例化这个超
vara=newPerson('Darren1')
console.log(a.getName());//Darren1
//再声明类
functionProgrammer(name,sex){
//这个类中要调用超类Person的构造函数,并将参数name传给它
Person.call(this,name);
this.sex=sex;
}
//这个子类的原型对象等于超类的实例
Programmer.prototype=newPerson();
//因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数,你可以自己测试一下,如果没这一步,console.log(Programmer.prototype.constructor这个是Person超类的引用,所以要从新赋值为自己本身
console.log(Programmer.prototype.constructor);
/*functionPerson(name){
this.name=name;
}*/
Programmer.prototype.constructor=Programmer;
console.log(Programmer.prototype.constructor);
/*functionProgrammer(name,sex){
Person.call(this,name);
this.sex=sex;
}
*/
//子类本身添加了getSex方法
Programmer.prototype.getSex=function(){
returnthis.sex;
}
//实例化这个子类
var_m=newProgrammer('Darren2','male');
//自身的方法
console.log(_m.getSex());//male
//继承超类的方法
console.log(_m.getName());//Darren2
2.js原型式继承
/*--原型式继承--*/
//clone()函数用来创建新的类Person对象
varclone=function(obj){
4
var_f=function(){};
//这句是原型式继承最核心的地方,函数的原型对象为对象字面量
_f.prototype=obj;
returnnew_f;
}
//先声明一个对象字面量
varPerson={
name:'Darren',
getName:function(){
returnthis.name;
}
}
//不需要定义一个Person的子类,只要执行一次克隆即可
varProgrammer=clone(Person);
//可以直接获得Person提供的默认值,也可以添加或者修改属性和方法
alert(Programmer.getName())
Programmer.name='Darren2'
alert(Programmer.getName())
//声明子类,执行一次克隆即可
varSomeone=clone(Programmer);
以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。