继承

JavaScript是弱类型语言,但本身的面向对象思想也是很强大的,继承也是一大核心。两个常用继承:

先定义一个父类,顺便展示原型链的使用。

function user() {
    this.name = name || 'wade';

    this.age = function () {
        console.log(this.name + '的年龄30');
    }
}
user.prototype.height = function () {
    console.log(this.name + '的身高193');
}
var user = new user();
console.log(user.name);//wade
user.age();//wade的年龄30
user.height();//wade的身高193
复制代码

通过原型链继承:

function Son() {

}
Son.prototype = new User();
var son = new Son();
console.log(son.name);//wade
son.age();//wade的年龄30
son.height();//wade的身高193
复制代码

但是当你想要修改某个父类已有的属性的时候,必须是在继承之后修改,否则会被父类覆盖

function Son() {

}
Son.prototype.name = 'kobe';//在继承之前修改,下面还是输出name为wade
Son.prototype = new User();
Son.prototype.name = 'kobe';//在继承之后修改,下面输出的为kobe
var son = new Son();
console.log(son.name);//wade
son.age();//wade的年龄30
son.height();//wade的身高193
复制代码

这个继承方法,没办法实现多继承,意思是继承了一个之后是不能再继承另外一个,也不能向父类传递参数,修改原有的属性需要new之后。

构造继承:

function Son(name) {
    User.call(this);
    this.name = name || 'kobe';
}
var son = new Son();
console.log(son.name);
son.age();
复制代码

用这个继承方法,可以实现多个继承,也可以传递参数。

继承的实现方式还有好几种,本人认为这是常用的,当然,应该也会有一些细节或者是原理我讲的不对,欢迎指正。

欢迎关注 Coding 个人笔记 公众号

转载于:https://juejin.im/post/5c47197d518825260a7df18b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值