call,apply,this 지향

1471 단어
모든 함수는 계승되지 않은 두 가지 방법인call()과 apply()를 포함하는데 이 두 가지 방법은 모두 특정한 작용역에서 함수를 호출하는 것으로 함수 체내의this 대상의 값을 설정하는 것과 같다.
ply () 방법은 두 개의 매개 변수를 수신합니다: 첫 번째: 현재 대상을 가리킨다. 즉 이 함수를 호출하고 있는 대상을 가리킨다. 두 번째: 그룹, 예: fn.apply(this, ["name", "jeck"]);또는 배열 객체, 예: fn.apply(this, new Array("name", "jeck"));또는 arguments 객체
call () 방법은 두 개의 매개 변수를 수신합니다: 첫 번째: 현재 대상, 즉 이 함수를 호출하고 있는 대상 두 번째: 매개 변수 목록, 예: f.call(this, num1, num2, num3);
://call 방법,this의 지향을 바꿀 수 있고,this는 괄호에 적혀 있습니다
 var a={
   name:" ",
   eat:function(num,num1){
   console.log("eat"+num+num1,this)
  }
}
 var b ={name:"app"};
 a.eat.call(b);//this b
 a.eat.call(red);//this red
 a.eat.call(this);//this window
 a.eat.call()//this window
 a.eat.call(b," "," ");// , this 

//apply: call, :  
a.eat.apply(b,[" "," "]);

this의 지향 1.누가 사용하는 방법,this는 누구를 가리킨다
function test(){
  console.log("test ");
  return function(){
  console.log(" ")
  }
 }
 console.log(window.test,this);//this window

2. 직접 호출 방법,this는 window를 가리키며 레드에 클릭 이벤트를 추가합니다
①red.onclick=test();// 
②red.onclick=test;// test
red.onclick();//this red
test()//this window

3. 타이머의this가 window를 가리킨다.
 function test(){
  var _this = this;// this red
  setTimeout(function(){
    console.log("test ",_this);
},1000)

}

좋은 웹페이지 즐겨찾기