2. this가 이런거로군
주요 개념 및 내용
this가 바인딩 되는 규칙
function foo() { console.log(this.a); // this = obj }; var obj = {a:2}; foo.call(obj); // 2 : 객체(obj)를 명시적으로 넘김 // 객체가 아닌 원시값 (String, Number, Boolean) 넘기 경우 -> new String(), new Number(), new ~ 호출function foo4() { console.log(this.a); } var obj33 = { a: 25 }; var bar = function () { foo.call(obj33); // 하드바인딩 }; bar(); //25
function foo44(a) { this.a = a; // this -> 새로 생성된 객체를 가르킨다 this = bar } var bar = new foo44(22); console.log(bar.a); // 22 : this = bar (new for44-> 새객체(함수) 생성 -> bar에 바인딩)function foo2() { console.log(this.a); // this = obj }; var obj2 = { a: 42, foo2: foo2 }; var obj = { a: 4, foo2: foo2, // obj.foo2 = foo2 obj2: obj2 }; obj.foo2(); // 4 obj.obj2.foo2(); // 42 : 하부에서부터 탐색을하기 때문 var bar = obj.foo2; var a = "전역쓰~"; // 암시적 소실 -> obj가 객체가 아님 bar(); // undefined -> 이때 호출은 그냥 foo2 호출가 동일해지면서 기본바인딩 적용 : this = global ()function foo(){ console.log(this.a); // this => global } var a = 2; // foo(); // undefined / 엄격모드:에러 -> 호출스코프 : 전역, foo this -> global
주의 사항
테스트 코드
Last updated