티스토리 뷰

javascript

[생활코딩]this

소영 2021. 4. 26. 01:07

this란

객체의 소속인 메소드의 this는 그 객체를 가르킨다.

var o ={

  func : function(){

   if(o===this){

    document.write('o === this');

   }

  }

}

 

 

var funcThis = null;



function Func(){

funcThis = this;

}

var o1 = Func();

if(funcThis === window){

document.write('window <br />');

}



var o2 = new Func(); //생성자를 만들었을때 생성자 안에서 this가 됨 (new로 하였을때 o2가 this가 됨)

if(funcThis === o2){

document.write('o2 <br />');

}

생성자 안에서 this는 그 생성자가 만든 객체이다. 생성자가 실행되기 전까지는 객체는 변수에도 할당 될 수 없다. 

 

 

function sum(x,y){return x+y;}//함수리터럴

var o ={}//객체리터럴

var a = [1,2,3] , new Array(1,2,3) //배열리터럴

객체-주인(master)

메소드-노예(slave)

 

함수의 메소드인 apply,call을 이용하면 this의값을 제어할 수 있다.

자바스크립트함수는 메소드가 객체에 강하게 종속되는 다른 객체 지향 언어와는 다르게,

일반적인객체에서의 메소드보다 위상이 높고,

그럼에도 함수를 어떻게 호출하느냐에 따라 함수는 어떤 객체에 각각 종속되기도 하며,

함수 자체로도 객체가 될 수 있다.

 

요약

1.this가 객체에 종속되어있지 않다면, 보통 window를 가르킨다.

2.생성자를 만들면 그 생성자가 this가 된다. 하지만 생성자가 실행되기 전까지는 undefined이다.

3.메소드인 apply,call로 this값을 제어할 수 있는데, 이는 this가 가르키는 객체와 메소드의 관계가 수평적이라는 것으로 볼 수 있다.(이것은 자바스크립트의 객체지향언어가 다른 객체지향언어에서의 메소드가 견고하게 종속된 것과는 다른 방식이다.)

 

 

 

'javascript' 카테고리의 다른 글

배열 내장함수  (0) 2021.05.01
[생활코딩]상속과 prototype  (0) 2021.04.28
[생활코딩]전역객체  (0) 2021.04.25
[생활코딩]생성자와 new  (0) 2021.04.25
[생활코딩]객체 지향 프로그래밍  (0) 2021.04.24
댓글