생성자 함수를 호출할 때 this바인딩
new 연산자를 이용한 함수 생성
1.빈 객체 생성 및 this바인딩
2.this를 통한 프로퍼티 생성
3.생성된 객체 리턴
default, this로 바인딩된 새로 생성한 객체 리턴
var Person = function (name){
if(!(this instanceof Person))
return new Person(name);
this.name = name ? name : 0;
};
var illua = new Person('illua');
console.log(illua.name); //결과 : illua
console.log(Person('illua')); //결과 : illua
함수를 호출할 때 this바인딩
자바스크립트에서 함수 내부 코드에서 사용된 this는 전역 객체에 바인딩 됨
만약, 브라우저에서 실행할 경우 전역객체는 window 객체가 됨
var globals = 'java script';
console.log(window.globals);
var inStruct = function(){
console.log(this.globals);
}
inStruct(); //결과 : java script, 호출과 동시에 this는 전역 객체인 window에 바인딩 됨
*내부함수에도 동일하게 적용 됨으로 사용시 유의해야 함
해결방법
1.참조해야할 객체의 this를 다른 변수에 저장
var that = this;
this.value += 1;
2.내부함수들은 that을 사용하여 객체에 접근
that.value += 1;
console.log(that.value);
자바스크립트는 이러한 this바인딩을 명시적으로 활용할 수 있도록 call, apply메서드 제공
'학습 log (이론) > javascript' 카테고리의 다른 글
'프로토타입 체이닝' 정의 (0) | 2016.10.17 |
---|---|
'call(), apply()' 함수와 프로토타입 체이닝 (0) | 2016.10.17 |
'함수호출과 this #1' 함수와 프로토타입 체이닝 (0) | 2016.10.16 |
'함수의 다양한 형태' 함수와 프로토타입 체이닝 (0) | 2016.10.16 |
'함수 객체의 기본 프로퍼티' 함수와 프로토타입 체이닝 (0) | 2016.10.15 |