mozilla
검색 결과

    prototype

    요약

    특정 클래스의 인스턴스가 어디에 기초하여 만들어진 것인지 나타내는 값. 생성자 함수를 호출함으로써 생성할 수 있는 모든 개체는 prototype 속성을 갖습니다.

    Function의 속성
    구현된 곳: JavaScript 1.1, NES 2.0
    ECMA 버전: ECMA-262

    설명

    존재하는 클래스의 생성자 함수에 연관된 prototype에 속성이나 메소드를 추가함으로써 그 클래스에 새로운 속성이나 메소드를 추가할 수 있습니다. 문법은 다음과 같습니다.

    fun.prototype.name = value

    이때,

    fun 
    바꾸고자 하는 생성자 함수 개체의 이름.
    name 
    새로 만들 속성이나 메소드 이름.
    value 
    새 속성이나 메소드에 할당할 초기값.

    개체의 프로토타입에 속성을 추가하면, 그 개체의 생성자 함수를 사용해서 만든 모든 개체가 새 속성을 갖게됩니다. 예를 들어, 이런 코드를 썼다고 합시다.

    var array1 = new Array();
    var array2 = new Array(3);
    Array.prototype.description=null;
    array1.description="Contains some stuff"
    array2.description="Contains other stuff"
    

    prototype에 속성을 설정한 후에는, Array로 만든 모든 개체는 그 속성을 갖게될 것입니다.

    anotherArray=new Array()
    anotherArray.description="Currently empty"
    

    prototype 또한 개체이므로, 개체 상수값 문법을 이용해서 속성과 메소드를 할당할 수 있다는 점을 참고하십시오.

    function MyFunction() {
       alert("Created.");
    }
    
    MyFunction.prototype = {
       alert1: function(str) {
          alert(str);
       },
    
       five: 5,
    
       alert2: function() {
          alert("Hi.");
       }
    };
    var myObject = new MyFunction();
    myObject.alert1("There.");
    myObject.five;
    myObject.alert2();
    

    예제

    다음 예제는 str_rep라는 메소드를 만들어서 String.prototype.rep = str_rep 문장을 사용하여 모든 String 개체에 메소드를 추가합니다. new String()으로 만든 개체는 모두 그 메소드를 갖게 됩니다. 이미 만들어져 있는 개체들까지도 말입니다. 그리고나서 s1.rep = fake_rep라는 문장으로 String 개체 중의 하나는 다른 메소드로 바꿉니다. 그러나 다른 String 개체들은 그대로 str_rep 메소드를 사용합니다.

    var s1 = new String("a")
    var s2 = new String("b")
    var s3 = new String("c")
    
    // 모든 String 개체에 문자열을 N번 반복한 새 문자열을 만드는 메소드를 만듭니다.
    function str_rep(n) {
       var s = "", t = this.toString()
       while (--n >= 0) s += t
       return s
    }
    
    String.prototype.rep = str_rep
    
    s1a=s1.rep(3) // returns "aaa"
    s2a=s2.rep(5) // returns "bbbbb"
    s3a=s3.rep(2) // returns "cc"
    
    // 다른 메소드를 만들고, 하나의 String 변수에만 할당합니다.
    function fake_rep(n) {
       return "repeat " + this + " " + n + " times."
    }
    
    s1.rep = fake_rep
    s1b=s1.rep(1) // returns "repeat a 1 times."
    s2b=s2.rep(4) // returns "bbbb"
    s3b=s3.rep(6) // returns "cccccc"
    

    이 예제에 있는 함수는 String 생성자로 만들지 않은 String 개체에도 동작합니다. 다음 코드는 "zzz"를 반환합니다.

    "z".rep(3)
    

    문서 태그 및 공헌자

    Contributors to this page: Wafe, teoli
    최종 변경: teoli,