OPEN between Secret

prototype 본문

java/Java script & jQuery

prototype

해가꿈꾸는달 2014. 7. 31. 12:22
반응형

<!DOCTYPE html>

<html lang="en">
    <head>
<meta charset="UTF-8">
<script type = "text/javascript">

<!--

//생성자 함수 패턴-리턴문장 제거

function Player(){
alert(this);
this.x = 100;
this.y = 200;
this.display=function(){

alert('Player : ' + this.x + ',' + this.y + '=' + this);

};
}//func

/*여기 까지의 this 는 winodw 의 소속이고*/

/*----------------------------------------------------*/

/*여기서 부터는 pobj 의 this 가 된다. */

var pobj = new Player();

pobj.display();

pobj.moveRight= function(){

}//    <- 이렇게 동적으로 함수지정이 가능하다. 

var pobj2 = new Player();

pobj.display();

//이렇게 하면 메모리는 중복이다 ????????????????
//player의 display()가 메모리가 중복이 된다.

</script>
</head>
<body>
<div id = "result">
</div>
</body>
</html>

--------------------------------------------------

function ractangle(){} 로 함수를 하나 만들면 

ractangle.prototype이 만들어 지게 된다. 그래서

var obj = new ractangle() 을 하면 obj 가 가리키는게 ractangl()이 아니라  ractangle.prototype을 가르키게 된다.

만약 var obj2 = new ractangle()을 해도 obj2 도 ractangl()을 가리키는게 아니라  ractangle.prototype을 가르키게 된다.

즉, 위에 예문에서 보면 function player() 안에 this.display 라는 함수가 있는데 객체를 만들떄마다 똑같은 함수가 2개나 만들어 지게 된다. 그럼 메모리를 낭비하게 되므로 이걸 없애주기 위해서 

밑에 예문 처럼 Rectangle.prototype.getArea = function(){ 이런식으로 접근해서 해주면 메모리 낭비를 줄일수 있다.


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type = "text/javascript">
<!--

function Rectangle(width, height){
var w = width; //지역변수 = 캡슐화
var h = height;
this.getwidth = function(){
return w;

};

this.getheight = function(){

return h;

};
}

Rectangle.prototype.getArea = function(){

//this만 접근가능, 지역변수 접근 불가능

var result="";

result='area:' + (this.getwidth * this.getheight);

return result;

} // 이렇게 하는게 그 prototype 안에 공통적으로 쓰는 함수를 정의하는것?


var robj= new Rectangle(3,4);

alert(robj.getArea());


   var robj2= new Rectangle(5,6);

alert(robj2.getArea());

//-->
</script>
</head>
<body>
</body>
</html>

]-------------------------------------------------------------------------------------------------------[


클래스 이름의 충돌을 막기 위해서 사용한다 ? ( package 처럼 ..?)

var Mycom={};

mycom.exam={};

mycom.exam.Rect={

x:100,

y:300

};

반응형

'java > Java script & jQuery' 카테고리의 다른 글

15.1.8 객체 마지막  (0) 2015.01.08
15.01.07(5장)  (0) 2015.01.07
javascript 캡슐화 하는 방법(클로저 이용)  (0) 2014.07.31
140730  (0) 2014.07.30
리터럴 종류  (0) 2014.07.29