[Javascript] 오버라이딩과 오버로딩

1. Overriding - 구현부의 다양성

:자바스크립트는 원래 정의 되어있던 식별자(예: alert)도 overriding할 수 있다. 무엇이든 데이터 타입 변경이 가능하니 typeof를 꼭 출력해보자!

<테스트 예제>

//사용된 변수는 window에 등록되고, 값은 가변적으로 사용이 가능하다. 
	var hello = 1234;
	hello = "안녕하세요";
	
	console.log(typeof hello);
	hello= 1234;
	console.log(typeof hello);
	hello= 1234;
	console.log(typeof hello);
	hello = new Date(); //생성자 처럼 사용
	console.log(typeof hello);
	hello = Date(); //메소드처럼 사용하면 결과(return type)을 전달해준다.
	console.log(typeof hello);
	
	hello = {name:"채수빈", age:10}; //클래스가 없기 때문에 name, age의 멤버 데이터로 객체를 정의 
	console.log(typeof hello);
	
	hello = function(){
		console.log("hello를 값을 지정하는 식별자에서 동작을 정의하는 식별자로 변경");
		//return 필수가 아님 
	}
	console.log(typeof hello);
	
	//식별자도 type을 변경할 수 있으니 확인하면서 코딩해야한다.!!
	alert = function(){ //원래 정의 되어있던 식별자(예: alert)도 overriding할 수 있음
		console.log("구현부 바꾸는거 - overriding");		
	}
	window.alert("message");

<테스트 결과>

**주의!!
: 식별자도 type을 변경할 수 있으니 확인하면서 코딩해야한다.!!

2. Overloading - 입력 매개인자의 다양성

: 자바스크립트는 매개인자 선언과 상관없이 입력값을 넣을 수 있다.

<테스트 예제>

	function user(){
		console.log("user()");
	}
	
	//overloading - 매개인자 선언과 상관없이 입력값을 넣을 수 있다.
	myUser = function(name, age){
		console.log("myUser()",arguments.length); //자바스크립트의 배열은 가변적으로 사용이 가능하다.(java와 큰 차이점)
		console.log(name,age);
		for (var t in arguments){
			console.log(arguments[t],t, typeof arguments[t]); //t는 인덱스 값(키 값)
		}
	}
	
	user();
	myUser();
	myUser("홍길동",10);
	myUser(10,20,30,40);
	

<테스트 결과>

좋은 웹페이지 즐겨찾기