美文网首页
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