포럼 내용이 있는 곳으로 건너뜀
사과나무 이야기 마당
Mac 사용자 정보 교류 마당 - AppleTree forums for Korean Mac users
로그인하지 않으셨습니다. 로그인 또는 가입해 주세요.
최근 갱신된 글타래 댓글이 없는 글타래
![](img/announce.gif)
이곳은 Mac 관련 유용한 정보들을 모아 많은 분과 함께 공유하기 위해 운영되고 있습니다.
잠깐 들르시는 나그네라도 자유롭게 글을 올리시고 의견을 나누실 수 있습니다.
새 댓글 작성
새 댓글 작성
새 댓글을 작성합니다.
사용 가능: BBCode 이미지 그림 문자
양식을 전송하기 전에 (필수)라고 표시된 모든 항목을 입력해야만 합니다.
글타래 내용 (최신 글 먼저)
Digital Web Magazine - Objectifying JavaScript : JavaScript 코드를 더 객체지향적인 코드로 바꾸는 대표적 방법들을 소개하고 있습니다. 주로, object literal을 사용하는 법과, function의 new 키워드를 쓰는 방법이 다루어져 있습니다.
댓글들도 눈여겨 볼 내용이 많군요.
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처럼 강력한 기능들을 제공하지는 않지만, 객체 지향의 구조를 갖는 웹 어플리케이션들을 개발하는데 충분한 가능성들을 제공하고 있답니다.