码迷,mamicode.com
首页 > 移动开发 > 详细

构造函数继承--call,apply

时间:2019-02-12 11:42:20      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:语法   开始   UNC   OLE   调用函数   The   一个   div   obj   

构造函数继承的原理 : 通过改变this指向来实现继承(在子类中使用call或apply的方式调用父类  让父类中的this指向子类new出来的对象)

  语法格式:

    function  子类函数名(参数1,参数2){

      父类函数名.call(this,参数1,参数2);     //注: 实例继承

    }

    function  子类函数名(参数1,参数2){

      父类函数名.apply(this,arguments或者[参数1,参数2,参数3,......]);     //注: 实例继承

    }

call和apply的特点:

  两个都只能继承实例不能继承原型,第一个参数的this都一样,指的是当前对象. call的第二个参数开始是参数列表,apply的第二个参数是数组或者arguments

  可以执行函数,可以带入参数,可以改变调用函数中this的指向,不能用于创建函数
call方法的练习:
    function fn3(num){
        this.a = num;     //obj1.a = 10
        fn4(this);      //调用fn4将obj1对象传递到fn4
    }
    function fn4(obj){
        obj.b = 10;        //为obj1添加新的属性b和c
        obj.c = 20;
    }
    var obj1 = {};  //定义一个对象,此时该对象没有任何属性
    fn3.call(obj1,10);  //调用fn3函数,让该函数中的this指向obj1,并传递参数10
    console.log(obj1);  //{a:10,b:10,c:20}

apply方法练习:

    function Father(tel,name,age){
        this.money = 99999999;
        this.name = name;
        this.age = age;
        this.tel = tel;
        this.dance = function(){
            console.log("会跳舞");
        }
    }

    function Son(tel,name,age){
        //在子类中使用call、或apply或bind调用父类的构造函数 并将父类中的this指向子类对象
        //Father.call(this,tel,name,age);
        //Father.apply(this,[tel,name,age]);
        Father.apply(this,arguments);    //在使用arguments的时候传递参数的顺序,和接收参数的顺序必须保持一致
    }
    var son = new Son("132xx","xm",13);
    var son1 = new Son("133xx","xh",18);
    console.log( son,son1 );
              

 

构造函数继承--call,apply

标签:语法   开始   UNC   OLE   调用函数   The   一个   div   obj   

原文地址:https://www.cnblogs.com/self-hard/p/10364433.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!