call()和apply()和bind()

call()和apply和bind()的共同点是都可以改变this的指向。
        function Person(name,age,gender){//创造一个构造函数
            this.name=name;
            this.age=age;
            this.gender=gender;
            this.say=function(){
                console.log('hi~');
            }
        }


        //call()
        function Student1(name,age,gender){
            Person.call(this,name,age,gender);
        }
        let student=new Student1('Anny',18,'boy');
        console.log(student);//Student
        



        //apply()
        function Student2(name,age,gender){
            // Person.apply(this,[name,age,gender]);
            Person.apply(this,arguments);

        }
        let student1=new Student2('Tong',20,'girl');
        console.log(student1);//Student



        //bind():返回的时候是一个函数,需要调用
        function Student3(name,age,gender){
            Person.bind(this,name,age,gender)()//使用bind方法后返回一个函数
        }
        let student2=new Student3('Tong',20,'girl');
        console.log(student2);//Student            

  

 

posted @ 2022-07-13 21:38  hollow~  阅读(59)  评论(0)    收藏  举报