
this는 JavaScript에서 어떻게 작동하는지 설명해주세요.
this함수 호출 → 실행 컨텍스트 생성 → this 가 결정
⇒ 즉, 함수 호출될 때 this가 결정된다고 볼 수 있습니다.
함수 vs. 메서드
(함수와 메서드 모두 "미리 정의한 동작을 수행하는 코드 뭉치")
    var obj ={
    	methodA : function () {console.log(this);},
    	inner: {
    		methodB: function () {console.log(this);}
    	}
    };
    obj.methodA(); //===obj**      //점 호출법
    obj["methodA"](); //===obj  //대괄호 호출법(결과는 동일)
    obj.inner.methodB(); //**===obj.inner**
(함수를 함수로 호출시 this가 지정되지 않고 전역 객체를 바라봄.)
var obj1 = {
	outer : function () {
		console.log(this); //===obj1 (점으로 호출했기 때문) 
		var innerFunction = function () {
			console.log(this);  //===window전역객체 (함수로 호출했기 때문)
	}
	innerFunction();
	var obj2 = {
		innerMethod: innerFunction
		};
	obj2.innerMethod();
	}
};
obj1.outer();
this바인딩은
함수를 실행하는 당시의 주변 환경은 중요하지 않고, 오직 해당 함수를 **호출하는 구문 앞에 점 또는 대괄호 표기가 있는지 없는지**가 관건.
→ this라는 단어와 실제 결과값이 매치가 되지 않음. 주변 환경의 this를 그대로 상속받아 사용하는 편이 논리적으로 더 설득력이 있음 → 이렇게 동작하도록 우회하는 방법을 대개 사용함.
👋 var self = this;
var obj1 = {
	outer : function () {
		console.log(this);
		var innerFunction = function () {
			console.log(this); 
	}
	innerFunction();
	var self = this; //우회하는 방법(상위 스코프의 this를 변수에 저장하여**
	var innerFunction2 = function () {
		console.log(self); //내부함수에서 활용**
		};
	innerFunction2();
      //함수로 호출하지만 self를 활용해서 this가 outer를 바라볼 수 있도록 함.
obj1.outer();
👋 ES6의 화살표 함수
: this바인딩 단계 자체를 하지 않음 → 상위 스코프의 this를 그대로 활용!
따라서 위 방법처럼 우회할 필요 없음.
var obj = {
	outer : function () {
		console,log(this);  //===outer
		var innerFunction = () =>{
			console.log(this); **
              //===outer(상의 스코프의 this를 그대로 가져옴)**
		};
		innerFunction();
	}
};
obj.outer();
: 콜백 함수의 제어권을 가지는 함수(메서드)가 콜백 함수에서의 this를 무엇으로 할 지 결정. 특별히 정의하지 않은 경우에는 기본적으로 함수 호출과 마찬가지로 전역객체를 바라봄.
어떤 함수가 생성자 함수로서 호출된 경우, 함수 내부에서의 this === 새로 만들 인스턴스 자신이 됨.
var Cat = function (name, age) {
	this.bark = '야옹';
	this.name = name;
	this.age = age;
};
var choco = **new Cat('초코', 7); //함수 내부 this === choco 인스턴스 자신**
var nabi= **new Cat('나비', 5);  //함수 내부 this === nabi 인스턴스 자신**
console.log(choco, nabi);
: this는 아래처럼 상황에 따라서 달라집니다.
<코어 자바스크립트>