본문 바로가기

WEB의 속삭임/Client단의 외침

[JavaScript][객체] 자바스크립트의 간단한 객체

* 자바스크립트는 객체 지향 언어로써 객체를 생성 할수 있다. 엄밀 하게 말하면 프로토타입 베이스의 객체지향이라고 한다.




* 예제로써 알아보겠다. 

var Memeber = function(firstName, lastName){

      this.firstName = firstName;

      this.lastName = lastName;

this.getName = function(){

return this.lastName + ' ' + this.firstName;

}

};


var mem = new Memeber('요시히로', '야마다');

document.writeln(mem.getName());




 * 우리가 아는 Java에서는 모든 클래스가 동일하면 동일한 멤머 변수와 동일한 멤머 메소드를 가진다. 하지만 그것은 클래스베이스 객체지향에서 그렇지만 프로토타입 베이스 객체지향에서는 그렇지 않다.


* 멤버 메소드 추가 및 삭제

var Memeber = function(firstName, lastName){

      this.firstName = firstName;

      this.lastName = lastName;


};


var mem = new Memeber('요시히로', '야마다');


mem.getName = function(){

return this.lastName + ' ' + this.firstName;

}//멤버메소드 추가


document.writeln(mem.getName());


delete mem.getName;


document.writeln(mem.getName());


* 프로토타잎 메소드 선언.

** 객체 안에는 단지 프로토타잎 메소드만 존재하고 실제 메소드는 생성자(자바로 말하면 클래스라고 할수 있겠다.)에 있는것을 공유 하는 형태.

*** 이렇게 함으로써 메모리의 사용량을 절감 할수 있다. : 모든 객체에 메소드를 복사 하지 않고 참조 함으로써 메모리 절감.

*** 멤버의 추가나 변경을 인스턴스가 실시간으로 인식한다.

var Memeber = function(firstName, lastName){

      this.firstName = firstName;

      this.lastName = lastName;


};


var mem = new Memeber('요시히로', '야마다');


Memeber.prototype.getName = function(){

return this.lastName + ' ' + this.firstName;

};//프로토 타잎 메소드 추가


//여러개인 경우 아래 리터럴 사용법을 사용한다. 왜냐면 이쁘니깐 ^------^

Memeber.prototype = {

getName2 : function(){...},

getName3 : function(){...},

getName4 : function(){...}

};


Memeber.prototype.getName = function(){

return this.lastName + ' ' + this.firstName;

}//프로토 타잎 메소드 추가



document.writeln(mem.getName());