call, apply, bind 이 가리 키 는 방법 변경
1685 단어 빗질
구별:
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 지향 이 이미 한 대상 에 이 르 렀 을 때 다른 대상 에 복용 하 는 방법 을 바 꿉 니 다