JS高级——原型、构造函数的继承

定义父类的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();

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值