call method
현재 객체를 다른 객체로 대체하기 위해 객체의 메소드를 호출합니다.
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
매개변수
thisObj
선택 사항입니다. 현재 객체로 사용될 객체입니다.
arg1, arg2, , argN
선택사항. 일련의 메소드 매개변수가 전달됩니다.
설명
호출 메서드를 사용하면 다른 개체 대신 메서드를 호출할 수 있습니다. call 메소드는 함수의 객체 컨텍스트를 초기 컨텍스트에서 thisObj가 지정한 새 객체로 변경합니다.
thisObj 매개변수가 제공되지 않으면 전역 개체가 thisObj로 사용됩니다.
언뜻 보면 혼동하기 쉽습니다. 먼저 몇 가지 간단한 설명을 하겠습니다.
obj1.method1.call(obj2, 인수1, 인수2)
구체적인 예를 들어보겠습니다
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1);
이 예의 의미는 sub를 add, add.call(sub,3,1) == add(3,1)로 바꾸는 것이므로 실행 결과는 다음과 같습니다: Alert(4) ; // 참고: js의 함수는 실제로 객체이며 함수 이름은 Function 객체에 대한 참조입니다.
조금 더 복잡한 예를 살펴보겠습니다
function Class1() { this.name = "class1"; this.showNam = function() { alert(this.name); } } function Class2() { this.name = "class2"; } var c1 = new Class1(); var c2 = new Class2(); c1.showNam.call(c2)
어떻게 생각하시나요? 흥미로운 점은 객체 a가 객체 b의 메서드를 실행하도록 할 수 있다는 것입니다. 이는 Java 프로그래머가 감히 생각하지 못하는 것입니다. 더 흥미로운 점은 호출을 사용하여 상속을 구현할 수 있다는 것입니다
function Class1(){ this.showTxt = function(txt) { alert(txt); } } function Class2() { Class1.call(this); } var c2 = new Class2(); c2.showTxt("cc");
예, 그게 바로 javaScript가 객체지향에서 상속을 시뮬레이션하는 방법입니다. 상속을 받을 수 있습니다.
function Class10() { this.showSub = function(a,b) { alert(a-b); } } function Class11() { this.showAdd = function(a,b) { alert(a+b); } } function Class2() { Class10.call(this); Class11.call(this); }
차이점은 call의 두 번째 매개변수는 어떤 유형이든 될 수 있는 반면 Apply의 두 번째 매개변수는 배열이어야 한다는 것입니다
권장 튜토리얼: "🎜JS Tutorial🎜 》🎜위 내용은 js 호출 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!