继承

2019-02-02  本文已影响0人  wade3po

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 个人笔记 公众号

上一篇下一篇

猜你喜欢

热点阅读