난 전에는 javascript는 유효성체크하는 수준의 언어인줄 알고 있었다.

하지만 요즘 Ajax에 관심이 많아 공부를 하게 되니깐 생각보다 어렵고 재미있는 언어라는 사실을 알았다.

Object-oriented JavaScript
그중에서 제일 눈에 띄는 것은 자바와같이 객체처럼 사용할수 있다는것이다.

-code
function Pet(name) {
  this._name = name;
}
Pet.prototype._name;
Pet.prototype.getName = function() {
  return this._name;
}


-실행
var p = new Pet("Max");
alter(p.getName());

이걸보는순간..내가 만들었던 스크립트 코드들이 머리속을 지나가는 것은 무슨이유지?ㅡ;ㅡ


2차 충격  Inheritance

-code
function Dog(name) {
Pet.call(this, name);
}
Dog.prototype = new Pet();
Dog.prototype.wagTail = function() { alert("wagTail"); }

function Cat(name) {
Pet.call(this, name);
}
Cat.prototype = new Pet();
Cat.prototype.purr = function() { alert("Purring"); }

var d = new Dog("Max");
d.wagTail();
var c = new Cat("Fluffy");
c.purr();


실행
alert(d.getName());
alert(c.getName());

모든 객체지향프로그램에 등장하는 animal 예제 :)
위에서 보면 Pet을Cat,Dog에서 상속을 받아 getName()을 실행하고 있다.


마지막 충격.. ㅜ.ㅜ Polymorphism

-code
Pet.prototype.speak = function() {
  alert(this.getName() + " says...");
}
Dog.prototype.speak = function() {
  Pet.prototype.speak.call(this);
  alert("woof");
}
Cat.prototype.speak = function() {
  Pet.prototype.speak.call(this);
  alert("meow");
}

어떤가요? 신기 하지 않나요^^ 그리고 이글은 아래의 참고사이트에서 참고로 작성했습니다.

ps.아 그리고 java에서와 같이 public,private,privileged 란 개념이 존재하는군요.

참고사이트
Object-oriented JavaScript
Private Members in JavaScript

Posted by 전용우
,