Javascript Context와 this

javascript의 Context와 this 동영상
모든 함수(메서드)는 자신의 Context를 가진다.
Context는 그 함수와 바인딩(binding)되어 있는 객체이다.
함수에서 자신의 Context는 this 키워드로 접근할 수 있다.

<!-- 1. Context인 a태그의 name속성을 출력한다. -->
<button onclick="alert(this.name)" name="자체출력">자체 출력</button>

<!-- 2. this의 Context는 DOM Window이기 때문에 빈값이 출력 -->
<button onclick="thisFunc();" name="함수호출">함수 호출</button>

<!-- 3. 함수로 this를 전달해 name출력한다. -->
<button onclick="thisFunc2(this);" name="함수호출">함수 호출</button>

 

var obj = {
  property1: 'property1',
  property2: function() {
    alert(this.property1);
  }
};

var newObj = {
  property1: 'new Property1'
};

// obj.property2(); //결과값: property1, 이때 Context는 obj
// call과 apply메서드를 사용해서 context를 선택하여 호출할 수 있다.
// obj.property2.call(newObj); //결과값: new Property1, 이때 Context는 newObj
function myFunc() {
  console.log(this);
}

var myFunc2 = function() {
  console.log(this);
};

window.myFunc(); // 전역에 선언한 함수의 Context는 DOMWindow이다.

function thisFunc() {
  alert(this.name);
}

function thisFunc2(obj) {
  alert(obj.name);
}

출처 : http://cafe.naver.com/webappdev.cafe

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다