call, apply, bind 이 가리 키 는 방법 변경

1685 단어 빗질
call,  apply, bind 모두 this 지향 을 바 꿀 수 있 습 니 다.
구별:
call 은 매개 변수 하나, 매개 변수 하나만 들 어 올 수 있 습 니 다.
apply 는 한 배열 만 지원 합 니 다.
bid 방법 에 대해 서 는 이 함수 의 this 지향 을 직접 바 꾸 고 새로운 함 수 를 되 돌려 주 었 습 니 다. 그 후에 이 함 수 를 다시 호출 할 때 this 는 모두 bid 바 인 딩 을 가리 키 는 첫 번 째 매개 변수 입 니 다.bid 전송 방식 은 콜 방법 과 일치 합 니 다.
열:

    //                      
    const person1 = {
        name: '  ',
        eat(...args) { //...args    
            console.log(this.name + '              ' + [...args]);
        },
    }

    const person2 = {
        name: '  ',
        eat(...args) {
            console.log(this.name + '               ' + [...args]);
        },
    }

    person1.eat.call(person2, '  ', '  ') //           
    person2.eat.call(person1, '  ', '  ') //            

    person1.eat.apply(person2, ['  ', '  '])
    person2.eat.apply(person1, ['  ', '  '])


    const test1 = person1.eat.bind(person2, '  ', '  ')
    const test2 = person2.eat.bind(person1, '  ', '  ')
    test1()
    test2()

 
 

    function Student(name, sex, age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }


    function GradStudent(name, sex, age, course) {
        // Student.call(this, name, sex, age)
        Student.apply(this, [name, sex, age])
        this.course = course
    }

    var student = new Student('  1', ' ', '12');
    var grastudent = new GradStudent('  2', ' ', '18', '  ');

    console.log(student)
    console.log(grastudent)

총괄 적 으로 말하자면, 이런 방법 을 사용 하면, this 지향 이 이미 한 대상 에 이 르 렀 을 때 다른 대상 에 복용 하 는 방법 을 바 꿉 니 다

좋은 웹페이지 즐겨찾기