js面向对象与继承

本文通过一个JavaScript实例展示了如何实现构造函数Person和Student之间的继承,并扩展了各自的方法和属性。利用ES5的Object.create方法来实现原型链继承,同时演示了继承过程中方法的重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接来代码

function Person(name, age) {
	this.name = name;
	this.age = age;
}
Person.prototype.hi = function() {
	console.log('Hi,my name is' + this.name + ',I`m ' + this.age + ' years old now.');
};
Person.prototype.LESS_NUM = 2;
Person.prototype.ARMS_NUM = 2;
Person.prototype.walk = function() {
	console.log(this.name + 'is walking...');
};

function Student(name, age, className) {
	Person.call(this, name, age);
	this.className = className;
}
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
Student.prototype.hi = function() {
	console.log('Hi,my name is' + this.name + ',I`m ' + this.age + ' years old now,and from ' + this.className + '.');
};
Student.prototype.learn = function(subject) {
	console.log(this.name + ' is learning ' + subject + 'at ' + this.className + '.');
};

// test
var bosn = new Student('Bosn', 27, 'class 2,Grade 2');
bosn.hi();
console.log(bosn.LESS_NUM);
bosn.walk();
bosn.learn('math');


结果如下:


补充:Object.create是在ES5以后才开始支持的,处理优化时可以使用以下代码

if (!Object.create) {
	Object.create = function(proto) {
		function F() {}
		F.prototype = proto;
		return new F;
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值