글타래: Object-Oriented JavaScript의 용례들
다음은 JavaScript의 객체 지향 디자인 원리들을 사용한 용례들입니다.
- Encapsulation
// JavaScript Pet class
function Pet(name) {
this._name = name;
}
Pet.prototype._name;
Pet.prototype.getName = function() {
return this._name;
}
pet class의 instance 생성과 getName() 함수 실행
var p = new Pet("Max");
alert(p.getName());
- Inheritance
// JavaScript Dog class
function Dog(name) {
Pet.call(this, name);
}
// This defines the Pet class as the prototype object
// for all Dog instances.
Dog.prototype = new Pet();
Dog.prototype.wagTail = function() {
// Wagging
}
// JavaScript Cat class
function Cat(name) {
Pet.call(this, name);
}
Cat.prototype = new Pet();
Cat.prototype.purr = function() {
// Purring
}
이렇게 해서 생성된 새로운 class들과 method들은 다음과 같이 사용:
var d = new Dog("Max");
d.wagTail();
var c = new Cat("Fluffy");
c.purr();
- Polymorphism
// JavaScript Pet class
// ...
Pet.prototype.speak = function() {
alert(this.getName() + " says...");
}
// JavaScript Dog class
// ...
Dog.prototype.speak = function() {
Pet.prototype.speak.call(this);
alert("woof");
}
// JavaScript Cat class
// ...
Cat.prototype.speak = function() {
Pet.prototype.speak.call(this);
alert("meow");
}
method들의 실행은 이전과 같이:
p = new Dog("Max");
p.speak();
p = new Cat("Fluffy");
p.speak();
이렇게 보면, C#이나 Java처럼 강력한 기능들을 제공하지는 않지만, 객체 지향의 구조를 갖는 웹 어플리케이션들을 개발하는데 충분한 가능성들을 제공하고 있답니다.