javascript this 관련 총화

3155 단어
우선 분명히 해 야 한다.
this 는 변수 대상 (variable object) 의 속성 이 아 닌 상하 문 (execution context) 을 실행 하 는 속성 입 니 다.현재 실행 컨 텍스트 에 들 어가 면 this 값 이 확 정 됩 니 다.this 는 식별 자 분석 과정 에 참여 하지 않 습 니 다. (도 메 인 체인 에서 찾 지 않 습 니 다) 값 은 실행 컨 텍스트 에서 직접 가 져 옵 니 다.
this 의 값 은 함수 호출 방식 과 밀접 한 관 계 를 가진다.
방법 호출 모드
함수 가 대상 이 되 는 방법 (method) 이 호출 될 때 this 는 이 대상 에 연 결 됩 니 다.
var obj={
    name:'test',
    fun:function(){
            console.log(this.name) //test
         }
}
obj.fun()
obj['fun']()

함수 호출 모드
함수 가 대상 의 속성 이 호출 되 지 않 았 을 때 this 는 전역 대상 (엄격 한 모드 에서 this 값 은 undefined) 을 가리 키 며 브 라 우 저 에서 window 입 니 다.
function fun1  () {
    console.log(this)//Window
    function fun2() {
        console.log(this)//Window
    }
        fun2()
}
fun1()

구조 기 호출 모드
구조 함 수 는 new 호출 을 사용 합 니 다. 호출 할 때 뒤에서 이 함수 prototypes 속성 에 연 결 된 새로운 대상 을 만 들 고 this 도 이 대상 에 연 결 됩 니 다.구조 함수 반환 값 이 대상 (primitive value, 또는 반환 값 이 명확 하 게 지정 되 지 않 았 음) 이 아니라면 this 를 되 돌려 줍 니 다.
function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function () {
  return '(' + this.x + ', ' + this.y + ')';
};

var p = new Point(1, 2);

apply call bind 모드
call () 과 apply ()
callapply 는 함수 가 상하 문 에서 this 를 실행 하 는 방향 을 바 꿀 수 있 습 니 다.어떤 방법 이 대상 에 존재 하지 않 을 때 콜 이나 apply 를 통 해 이 방법 을 호출 할 수 있 습 니 다.
비슷 하기 때문에 많은 상황 에서 두 가 지 를 사용 할 수 있 습 니 다. 예 를 들 어 전통 적 인 계승 기법 에서 부모 구조 함 수 를 호출 할 수 있 습 니 다.
call () 과 apply () 의 차 이 는:
4. 567917. 콜 을 빌려 특정한 방법 을 호출 할 때 이 방법의 매개 변 수 는 콜 의 첫 번 째 다음 매개 변 수 를 통 해 여러 매개 변수의 목록 형식 으로 전 달 됩 니 다
4. 567917. apply 를 빌려 특정한 방법 을 호출 할 때 이 방법의 매개 변 수 는 call 의 두 번 째 매개 변 수 를 통 해 여러 개의 매개 변 수 를 포함 하 는 배열 이나 배열 대상 의 형식 으로 전 달 됩 니 다
이 점 이 다 르 기 때문에 아래 의 상황 은 apply () 를 사용 하면 매우 적합 하지만, call () 을 사용 하면 적합 하지 않다.
var  numbers = [1, 2, 3, 4 ]; 
var max = Math.max.apply(Math, numbers); //4
var max = Math.max.call(Math,1, 2, 3, 4); //4         。

bind()
bid () 방법 은 바 인 딩 함수 라 는 새로운 함 수 를 만 들 것 입 니 다. 이 바 인 딩 함 수 를 호출 할 때 바 인 딩 함 수 는 이 를 만 들 때 bid () 방법 에 들 어 가 는 첫 번 째 매개 변 수 를 this 로 하고 bid () 방법의 두 번 째 및 이후 매개 변수 에 바 인 딩 함수 가 실 행 될 때 자체 의 매개 변 수 는 순서대로 원 함수 의 매개 변수 로 원 함 수 를 호출 합 니 다.
bid 와 다른 두 가지 중요 한 차이 점 이 있 습 니 다. bid 는 함수 정의 단계 에서 함 수 를 지정 하여 문맥 을 실행 하 는 this 지향 입 니 다. 바 인 딩 후 바로 호출 되 지 않 습 니 다.bid call 과 apply 에 대해 서 는 총 결 상세 한 이 야 기 를 한 편 더 써 야 합 니 다.
ES6 화살표 함수 의 this
화살표 함수 에는 자신의 this 가 아니 라 외층 의 this 를 참조 합 니 다.그 렇 기 때문에 react 에서 이렇게 사용 할 수 있 습 니 다.
  //constructor   “  ”(=>)    handle  。     this        。
  constructor(props) {
    super(props);
    this.state = {
    }
    this.cancelDelete = () => {
      const hid = this.props.host.hid;
      this.props.actions.cancelDelete(hid)
    }

    this.confirmDelete = () => {
      const hid = this.props.host.hid;
      this.props.actions.confirmDelete(hid)
    }
  }
// render       ,        this   。
  render(){
      return(
       
         
     )
  }

좋은 웹페이지 즐겨찾기