javascript原型继承

咱们前端的javascript比较任性调皮,类似java,c++之类的继承本质是在原有的class上,并生成一个subclass。

JavaScript由于采用原型继承,我们无法直接扩展一个Class,因为根本不存在Class这种类型。

如果咱们要原型继承的话可以这样:

1、创建一个构造函数作为运输载体;

2、将一个构造函数的原型赋予这个运输载体;

3、然后将运输载体实例化

4、将实例化后的运输载体赋予想要继承的构造函数的原型;

5、想要继承的构造函数的prototype.constructor = 想要继承的构造函数;

接下来看代码:

function inherits(Child, Parent) {
    var F = function () {};
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
}

这个inherits()函数可以复用:

function Student(props) {
    this.name = props.name || 'Unnamed';
}

Student.prototype.hello = function () {
    alert('Hello, ' + this.name + '!');
}

function PrimaryStudent(props) {
    Student.call(this, props);
    this.grade = props.grade || 1;
}

// 实现原型继承链:
inherits(PrimaryStudent, Student);

// 绑定其他方法到PrimaryStudent原型:
PrimaryStudent.prototype.getGrade = function () {
    return this.grade;
};
写的不是很透彻,望理解


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值