호출 메서드는 지정된 이 값과 지정된 여러 매개변수 값을 사용하여 함수나 메서드를 호출합니다.
참고: 이 함수의 구문은 apply() 메서드의 구문과 거의 동일하지만 apply() 메서드는 매개변수 배열을 허용한다는 점만 다릅니다. 호출 () 메소드는 매개변수 목록을 승인합니다.
이 두 가지 방법의 개념을 이해한 후, 단계별로 응용 방법을 이해해 보겠습니다.
메서드에서 this의 포인터를 변경하세요
먼저 다음 예시를 살펴보겠습니다
var name = "编程的人"; var age = 1; var person = { name:"公众号:bianchengderen", age:20 } function say(){ console.log("我叫:"+this.name+",年龄:"+this.age) } say();// 我叫: 编程的人,年龄: 1 say.call(person);//年龄:20
이 두 호출의 실행 방법이 다르고 결과도 다릅니다. say 메서드의 차이점은 첫 번째 실행이 창을 가리키고 호출 모드에서 실행한다는 것입니다. say 메소드에서 person 객체에 이것을 가리킵니다.
좀 다른 사람인 척 하는 느낌이 들지 않나요? 그럼 이게 무슨 소용이겠어요? 물론, 무엇을 할 수 있을지 더 생각해 보세요.
상속 메커니즘 구현
상속은 고급 객체지향의 기능으로, 호출을 사용하면 JAVASCRIPT를 사용하여 이 기능을 사용할 수 있습니다.
다음 예시를 보기 전에 위 예시를 잘 이해하고 있어야 합니다.
function Person(){ this.name = "编程的人"; this.age = 20; } function Student(){ Person.call(this); this.school = "地球"; } var student = new Student(); //下面打印出来: 编程的人,20,地球 console.log(student.name,student.age,student.school);
이 예제에서 Student 함수는 Person.call(this)을 통해 구현된 Person의 이름과 나이 속성을 상속받습니다. 위의 예제를 이해하면 이해하기 어렵지 않을 것입니다. this.school과 같은 고유한 개성이 있습니다.
여기에서는 모든 사람의 이해를 돕기 위해 매개변수를 추가하지 않습니다. 코드를 사용해 보고 작동 방식을 확인하세요.
먼저 이 두 가지 예에 대해 이야기한 후 심도 있게 연구해 보겠습니다.