定义父类的Person的构造函数
function Person(name) {
this.name = name;
}
定义父类Person的原型
Person.prototype.sayName = function () {
console.log("名字:" + this.name);
}
继承原型:
定义子类构造函数Student
function Student(name, age) {
this.name = name;
this.age = age;
}
子类继承父类原型
// 子类Student原型继承父类,student的原型是person的一个实例化对象,此时子类student没有写原型
Student.prototype = new Person();
实例化子类student对象
var s1 = new Student("张三");
// 子类student可以调用父类的方法
s1.sayName(); // 名字:张三
重写父类方法:
// 子类Student原型继承父类,student的原型是person的一个实例化对象,此时子类student没有写原型
Student.prototype = new Person();
// 在继承父类原型后,重写父类方法
Student.prototype.sayName=function(){
console.log("hello,我的名字是:" + this.name); // hello,我的名字是:张三
}
继承构造函数
// 方法一
function Student2(name) {
// 使用call()方法继承父类构造函数
Person.call(this, name);
}
Student2.prototype.sayName = function () {
console.log("我的名字是:" + this.name);
}
// 实例化子类student2对象s1
var s2 = new Student2("王五");
s2.sayName();
// 方法二
function Student2(name) {
// 使用apply()方法继承父类构造函数,第二个参数以数组的形式表达
Person.call(this,[name]);
}
Student2.prototype.sayName = function () {
console.log("我的名字是:" + this.name);
}
// 实例化子类student2对象s1
var s2 = new Student2("王五");
s2.sayName();