三种方法实现js中类的继承

首先第一种方法,通过拓展Object来实现继承:

//定义一个父类
 function Parent(add){
        this.add = add;
    }
//定义一个子类
    function Child(name){
        this.name = name;
    }
//定义一个全局都可以用的继承方法
Object.prototype.extend = function(ParentObj){
        for(var i in ParentObj){
            this[i] = ParentObj[i]
        }
    };
//使用我们的方法进行继承
Child.extend(Parent('China'));
//实例化对象(初始化数据)
var obj = new Child('lemon')
//此时我们就可以调用父类中的方法或属性了
console.log(obj.add);
//输出结果:China

第二种方法,通过call或apply来实现继承,两者用法基本相同

    //父类
    function Parent(add){
        this.add = add;
    }
    //子类
    function Child(name){
        this.name = name;
        //call方法实现继承
        Parent.call(this,'China');
        //apply方法实现继承
       Parent.apply(this,['China']);

/*tip:call方法与apply方法选其一即可,两者使用方法基本一致,在传参的时候略有不同!*/
    }
//实例化对象
var obj = new Child('lemon')
console.log(obj.name+':'+obj.add)

第三种方法,通过prototype实现继承

 
    function Parent(add){
        this.add = add;
    }

    function Child(name){
        this.name = name;
    }
//通过把子类的原型对象改为父类中的对象来实现继承
    Child.prototype = new Parent('China');

    var obj = new Child('lemon');

    console.log(obj.name+':'+obj.add);

你学会了吗?有问题欢迎提出来哟!

posted @ 2017-03-02 12:41  叶小凡  阅读(1196)  评论(0编辑  收藏  举报