티스토리 뷰

Development

[JavaScript] Method Overriding

devbible 2010. 12. 27. 00:27

자바스크립트는 자바와는 다르게 기본적으로 메소드 오버라이딩을 지원하지 않는다.
때문에 사용자가 메소드 오버라이딩 소스를 만들어 적용해주어야 한다.

 
  1. function addMethod(object, name, fn){
  2.     var old = object[ name ];
  3.     object[ name ] = function(){
  4.     if ( fn.length == arguments.length )
  5.        return fn.apply( this, arguments );
  6.     else if ( typeof old == 'function' )
  7.        return old.apply( this, arguments );
  8.    };
  9. }
  10.  
  11. // Now setup the methods
  12.  
  13. function Users(){
  14.   addMethod(this, "find", function(){
  15.     // Find all users...
  16.   });
  17.   addMethod(this, "find", function(name){
  18.     // Find a user by name
  19.   });
  20.   addMethod(this, "find", function(first, last){
  21.     // Find a user by first and last name
  22.   });
  23. }
  24.  
  25. // Now use the methods
  26. var users = new Users();
  27. users.find(); // Finds all
  28. users.find("John"); // Finds users by name
  29. users.find("John", "Resig"); // Finds users by first and last name
  30. users.find("John", "E", "Resig"); // Does nothing

[출처 및 저작자] http://ajaxian.com/
댓글