전역 객체에 직접 할당할 경우 차이 - delete 안됨
-자바스크립트 개발자의 안전장치라고 이해하면 됨
(전역 변수로 선언한 경우, 해당 프로퍼티의 configurable속성이 false로 설정되므로, 삭제가 되지 않는다)
this: 호출한 주체에 대한 정보가 담긴다.
-this를 바인딩 하는 시점: 함수가 호출 될 때
함수를 실행하는 방법은 여러가지지만, 함수로서 호출, 메서드로 호출 하는 두가지에 대한 this 차이를 정리한다.
-함수와 메서드의 개념 정리
함수: 독립적인 기능 수행
메서드: 호출한 대상 객체애 관한 동작 수행
-자바스크립트에서는 이 둘을, 상황별로 this 키워드에 다른값을 부여하게 함으로써 차이를 둔다.
var obj(){
method: func2
method() //메서드 x (함수로 호출)
}
obj.method //메서드o, this:obj
obj[method]//메서드o
-함수로서 호출한 경우에는 호출 주체를 명시하지 않고, 개발자가 직접 관여해서 실행한 것이기 때문에, 호출 주체의 정보를 알 수 없다.
->this 는 전역객체를 가리킨다.
->함수를 실행하는 주변환경(메서드 내부인지, 함수 내부인지)는 중요치 않고, 해당 함수를 호출 하는 구문 앞에 점이나 대괄호 표기가 있었는지가 관건이다!
1) this 객체를 담아놓고 넘겨주기
2) this를 바인딩 하지 않는 함수 사용하기
(arrow 함수)
3) 콜백 함수에서 this 지정하는 방법
->정의하지 않은 경우, 전역 객체를 바라본다.
4) call/apply 활용 하기
5)
-new 명령어와 함께 함수를 호출하면, 생성자로 동작하는데, 이 경우this는 새로만들 인스턴스 자신이 된다.