JavaScript实现类的继承

下面是常用的js类继承的方式,我们继承一下上篇文章中的Person类:
function Person(name, age, email){
	this.name = name;
	this.age = age;
	this._email = email;
}

function _Person_show_me(){
	alert('我叫' + this.name + ',我' + this.age + '岁了,我的email是' + this._email);
}

Person.prototype.show_me = _Person_show_me;

function Student(name, age, email, score){
	Person.call(this, name, age, email);
	this.score = score;
}

function _Student_show_score(){
	alert("我的分数是:" + this.score);
}

Student.prototype = new Person();
Student.prototype.show_score = _Student_show_score;

var he = new Student('小何', 28, 'baijun.he@163.com', 80);
he.show_me();
he.show_score();


  1. 使用了js的call()方法调用父类的构造函数。第一个参数是this,当实例化Student时,这个this就表示he这个对象。后面的参数就是调用的函数Person的参数。
  2. Student.prototype = new Person();通过这个语句把Person类的属性和方法传递给Student类。这里只传递了方法,属性我们通过上面的call方法定义了。
  3. 为什么在 new Person();中没有传递参数呢?这是原型链的标准做法。要确保构造函数没有任何参数。我们通过call方法实现参数的赋值。
  4. Student.prototype.show_score = _Student_show_score;必须在 Student.prototype = new Person();后面调用,因为执行 Student.prototype = new Person();时Student的prototype属性被替换成了新的对象,以前的属性和方法会被删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值