포럼 내용이 있는 곳으로 건너뜀

사과나무 이야기 마당

Mac 사용자 정보 교류 마당 - AppleTree forums for Korean Mac users

로그인하지 않으셨습니다. 로그인 또는 가입해 주세요.

이곳은 Mac 관련 유용한 정보들을 모아 많은 분과 함께 공유하기 위해 운영되고 있습니다. 잠깐 들르시는 나그네라도 자유롭게 글을 올리시고 의견을 나누실 수 있습니다.

새 댓글 작성

새 댓글 작성

새 댓글을 작성합니다.

사용 가능: BBCode 이미지 그림 문자

양식을 전송하기 전에 (필수)라고 표시된 모든 항목을 입력해야만 합니다.

손님인 경우 필수로 요구되는 정보


필수 정보
글 설정 선택사항

글타래 내용 (최신 글 먼저)

2

Digital Web Magazine - Objectifying JavaScript : JavaScript 코드를 더 객체지향적인 코드로 바꾸는 대표적 방법들을 소개하고 있습니다. 주로, object literal을 사용하는 법과, function의 new 키워드를 쓰는 방법이 다루어져 있습니다.
댓글들도 눈여겨 볼 내용이 많군요.

JavaScript를 객체화하는 이유로는, 커다란 규모의 작업을 수행할 때 코드의 관리와 재사용이 간편해지기 때문일 것입니다.

1

다음은 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처럼 강력한 기능들을 제공하지는 않지만, 객체 지향의 구조를 갖는 웹 어플리케이션들을 개발하는데 충분한 가능성들을 제공하고 있답니다.



Mac으로 운영됩니다