继承

作者: wade3po | 来源:发表于2019-02-02 15:43 被阅读0次

    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://www.haomeiwen.com/subject/kibssqtx.html