코드/JS

프로토타입체인

Yeah-Panda 2013. 11. 26. 13:39



var Test = function()
    {
        this.print = function() {console.log('this print');}
    };


    Function.prototype.print = function(){console.log('Function.prototype.print');};
    Object.prototype.print=function(){console.log('Object.prototype.print');};
    Test.prototype.print = function(){console.log('Test.prototype.print');};
    Test.print = function(){console.log('Test static print');};

    Test.print();//정적 메서드 static
    // new Test().print();



new 연산자로 생성한 객체의 print 멤버함수를 호출해보면 안다.

처음엔 생성자 함수 Test 의 print 를 호출한다.

생성자 함수의 print 멤버함수를 삭제하면 Test.prototype.print 를 호출한다.

Test.prototype.print 를 삭제하면 Object.prototype.print 를 호출한다.



정적 메서드일 경우

Test static print 를 호출하고, 걔를 삭제하면 함수 자체의 프로토타입 Function.prototype.print 호출

Function.prototype.print 를 삭제하면 자바스크립트의 최종 클래스인 Object.prototype.print 를 호출한다.





'코드 > JS' 카테고리의 다른 글

&&연산자  (0) 2013.11.28
프로토타입 심화  (0) 2013.11.26
제이쿼리 요소 존재 확인, 자식요소존재 확인  (0) 2013.11.22
숫자 3단위마다 콤마 삽임  (0) 2013.11.21
Javascript DOM Ready  (0) 2013.10.23