'재정의'에 해당되는 글 1건

  1. 2011.09.26 Javascript에서 prototype은 무엇인가?
Web Tech/Javascript2011.09.26 22:55
많은 분들이 prototype 를 재정의(오버라이딩)라고! 정리해두셔서 적어둡니다.
물론 틀린 말도 아닙니다만^^ 

모든 객체 또는 클래스(틀)에 원하는 프로퍼티(변수)나,  메서드(함수)를 추가하는 것입니다.
의미가 좀 다릅니다.

자바스크립에는 오버로딩을 지원하지 않습니다.
그러나 가변 인자로 받을수 있지요.
많은 스크립트 언어의 공통점이 아닌가합니다^^
PHP도 물론 그렇구요.

너무 딴이야기로 새어나왔군요.
예제를 보면서 익혀보도록 하지요.

myName = "My name is Smile Man"; 
String.prototype.alert = function () {
    alert(this.valueOf());

myName.alert();

결과
 My name is Smile Man이 메시지창에 출력됩니다!

다시 설명
물론 다른언어들에서의 원칙적으로 myName을 선언은 String.prototype... 아래 있어야 합니다.
그러나 javascript 특성상 모든 상황이 아무때나 바뀔수 있습니다.
그래서 기존에 생성했던 객체들도 영향을 받는것입니다.

prototype를 이용하면 왜 재정의가 되는가?
prototype 부분을 자세히 살펴보면!
http://www.w3schools.com/jsref/jsref_prototype_string.asp

위에 문서를 보면 함수나 메서드가 아닌 프로퍼티라고만 되어 있습니다.
그렇습니다. 자바스크립트는 메서드를 프로퍼티 처럼 관리를 합니다.
때문에 런타임으로 메서드가 바뀔수 있습니다.

물론 함수(클래스에 소속되어 있지 않은)도 마찬가지이지요.
 
prototype 는 해당 프로퍼티에 해당하는 프로퍼티에 메서드나 프로퍼티를 재할당하게 될것입니다.
그래서 재정의라고 말하시는거구요^^

 요점
javascript에서 class에 메서드도 프로퍼티처럼 관리한다.(단 private 메서드를 제외한다.)
오버라이딩(재정의)라고 하는것 보다 추가라고 하는편이 더 맞는 표현이다.

제 생각을 정리해본 자료이므로 다소 틀릴수 있습니다^^ 그러므로 태클 환영입니다. 
Posted by ned3y2k