美文网首页
JS函数的call和apply的异同点

JS函数的call和apply的异同点

作者: 菲儿_cdd4 | 来源:发表于2020-11-04 18:51 被阅读0次

    含义:

    call:调用一个对象的一个方法,用另一个对象替换当前对象。
    举例:A.call(this,arguments);

    apply:调用一个对象的一个方法,用另一个对象替换当前对象。
    举例:A.apply(this,agr1,agr2)

    相同点:方法的含义一样,功能一样,第一个参数的作用也一样
    不同点:call传入的参数必须单个;apply只能传两个参数,第二个参数以数组的形式传入

    如何选择?
    call适合传入的参数较少
    apply适合传入的参数较多

      //-----------------------------------apply--------------------------------------------
            // 创建一个人
            function Person(name,age){
                this.name=name;
                this.age=age;
                console.log(this);
            }
    
            // 创建一个学生
            function Studert(name,age,grade){
                // apply就是继承父元素的属性
                Person.apply(this,arguments);this.grade=grade;
            }
            // 创建一个学生类
            let student=new Studert("玛丽","2", "一年级");
    
            alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade"+student.grade);
    
    
     //-----------------------------------call--------------------------------------------
            //  创建一个人
            function Person1(name, age) {
                this.name = name;
                this.age = age;
                console.log(this);//
            }
            // 创建一个老师
            function Teacher(name, age, job) {
                Person1.call(this,name,age);
                this.job = job;
            }
            //创建一个具体的老师    
            let teacher = new Teacher("玛丽", "25", "老师");
            alert("name:" + teacher.name +"\n"+ "age:" + teacher.age +"\n"+  "job:" +  teacher.job);
    

    相关文章

      网友评论

          本文标题:JS函数的call和apply的异同点

          本文链接:https://www.haomeiwen.com/subject/ihclvktx.html