본문 바로가기
학습 log (이론)/javascript

'생성자 함수를 이용한 객체 생성과 this #2' 함수와 프로토타입 체이닝

by abbear25 2016. 10. 17.

생성자 함수를 호출할 때 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메서드 제공

반응형