1. call method
객체의 메소드 호출, 현재 객체를 다른 객체로 교체 객체(실제로 객체의 내부 포인터를 변경하는 것, 즉 객체의 this가 가리키는 내용을 변경하는 것)입니다.
Js 코드
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
매개변수
thisObj
선택 사항입니다. 현재 객체로 사용될 객체입니다.
arg1, arg2, , argN
선택 사항. 일련의 메소드 매개변수가 전달됩니다.
설명
call 메소드를 사용하면 다른 객체 대신 메소드를 호출할 수 있습니다. call 메소드는 함수의 객체 컨텍스트를 초기 컨텍스트에서 thisObj가 지정한 새 객체로 변경합니다. thisObj 매개변수가 제공되지 않으면 전역 개체가 thisObj로 사용됩니다.
Js 코드
<input type=“text”id=“myText”value=“input text”> <script> functionObj(){this.value=“对象!”;} varvalue=“global 变量”; functionFun1(){alert(this.value);} window.Fun1(); //global 变量 Fun1.call(window); //global 变量 Fun1.call(document.getElementByIdx_x_x(‘myText’));//input text Fun1.call(new Obj());//对象! </script>
Js 코드
varfirst_object = { num: 42 }; varsecond_object = { num: 24 }; functionmultiply(mult) { returnthis.num * mult; } multiply.call(first_object, 5); // returns 42 * 5 multiply.call(second_object, 5); // returns 24 * 5
2. 적용 메소드
적용 메소드의 첫 번째 매개변수도 함께 전달되어야 합니다. 현재 객체의 객체, 즉 함수 내부의 this입니다. 다음 매개변수는 현재 객체에 전달되는 매개변수입니다.
Apply와 Call은 동일한 기능을 갖고 있지만, 매개변수에 차이가 있습니다. 첫 번째 매개변수의 의미는 동일하지만 두 번째 매개변수의 경우 apply는 매개변수 배열로 전달됩니다. 즉, 여러 매개변수가 배열로 결합되어 전달되는 반면 call은 call의 매개변수로 전달됩니다( 두 개의 매개변수로 시작).
예를 들어 func.call(func1,var1,var2,var3)의 해당 Apply 작성 방법은 func.apply(func1,[var1,var2,var3])와 같습니다. Apply의 두 번째 매개 변수로 전달되는 현재 함수의 인수 개체를 직접 추가할 수 있다는 것입니다.
Js 코드
var func=newfunction(){this.a=“func”} varmyfunc=function(x,y){ vara=“myfunc”; alert(this.a); alert(x + y); } myfunc.call(func,“var”,“ fun”);// ”func” ”var fun” myfunc.apply(func,["var"," fun"]);// ”func” ”var fun”
3. 호출자 속성
은 현재 함수를 호출하는 함수 본문인 함수에 대한 참조를 반환합니다.
functionName.caller: functionName 개체는 실행 중인 함수의 이름입니다.
참고:
함수의 경우 호출자 속성은 함수가 실행될 때만 정의됩니다. 함수가 JScript 프로그램의 최상위 수준에서 호출되는 경우 호출자에는 null 이 포함됩니다. 호출자 속성이 문자열 컨텍스트에서 사용되는 경우 결과는 functionName.toString과 동일합니다. 즉, 함수의 디컴파일된 텍스트가 표시됩니다.
Js 코드
<script> functionCallLevel(){ if(CallLevel.caller ==null) alert(“CallLevel was called from the top level.”); else alert(“CallLevel was called by another function:\n”+CallLevel.caller); } functionfunCaller(){ CallLevel(); } CallLevel(); funCaller() </script>
4. 호출 수신자 속성
지정된 Function 객체의 Body인 실행 중인 Function 객체를 반환합니다.
[function.]arguments.callee: 선택적 함수 매개변수는 현재 실행 중인 함수 객체의 이름입니다.
설명:
호출자 속성의 초기 값은 실행 중인 Function 개체입니다.
callee 속성은 인수 객체의 멤버입니다. 이는 함수 객체 자체에 대한 참조를 나타냅니다. 이는
함수의 재귀를 숨기거나 함수의 캡슐화를 보장하는 데 도움이 됩니다. 예제는 1부터 n까지의 자연수를 재귀적으로 계산합니다. 그리고 이 속성
은 해당 기능이 실행 중일 때만 사용할 수 있습니다. 피호출자에게는 때때로 확인을 위해
사용되는 길이 속성이 있다는 점에 유의해야 합니다. args.length는 실제 매개변수 길이이고,args.callee.length는
형식 매개변수 길이를 통해 호출 시 형식 매개변수 길이가 실제 매개변수 길이와 일치하는지 확인할 수 있습니다.
Js 코드
//callee可以打印其本身 functioncalleeDemo() { alert(arguments.callee); } //用于验证参数 functioncalleeLengthDemo(arg1, arg2) { if(arguments.length==arguments.callee.length) { window.alert(“验证形参和实参长度正确!”); return; } else{ alert(“实参长度:”+arguments.length); alert(“形参长度: ”+arguments.callee.length); } } //递归计算 var sum =function(n){ if(n <= 0) return 1; else returnn +arguments.callee(n - 1) }
5.바인드
Js 코드
<script type=“text/javascript”> varfirst_object = { num: 42 }; varsecond_object = { num: 24 }; functionmultiply(mult) { returnthis.num * mult; } Function.prototype.bind = function(obj) { var method =this, temp = function() { returnmethod.apply(obj, arguments); }; return temp; } varfirst_multiply = multiply.bind(first_object); first_multiply(5); // returns 42 * 5 varsecond_multiply = multiply.bind(second_object); second_multiply(5); // returns 24 * 5 </script>
위 내용은 JavaScript의 호출 메소드, 적용 메소드, 호출자 속성, 호출 수신자 속성에 대한 자세한 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!