JS函数的call和apply的异同点

2020-11-04  本文已影响0人  菲儿_cdd4

含义:

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);
上一篇 下一篇

猜你喜欢

热点阅读