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);
}