Know/JavaScript

JScript 고급개체 만들기[PROTOTYPE]

Marine™ 2006. 7. 26. 11:43
반응형
출처: http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/jscript7/html/constructor.asp


고급 개체 만들기

JScript는 사용자 지정 프로토타입 기반 개체를 사용하여 상속을 지원합니다. 프로토타입 기반 개체는 상속을 통해 동적으로 추가 또는 제거가 가능한 공통의 속성과 메서드를 공유할 수 있습니다. 더욱이, 각 개체는 기본 동작을 재정의할 수 있습니다.

프로토타입 기반 개체의 인스턴스를 만들려면 먼저 생성자 함수를 정의해야 합니다. 자세한 내용은 생성자 함수를 사용하여 사용자 정의 개체 만들기를 참조하십시오. 일단 이 생성자가 작성되면 그 자체가 모든 생성자의 속성인 prototype 개체의 속성을 사용하여 상속받은 속성과 공유 메서드를 만들 수 있습니다. 생성자는 인스턴스에 한정된 정보를 개체에 제공하며, prototype 개체는 개체에 한정된 정보와 메서드를 개체에 제공합니다.

참고 개체의 모든 인스턴스에 영향을 주려면 그 생성자의 prototype 개체를 변경해야 합니다. 개체의 한 인스턴스의 prototype 속성을 변경해서는 동일 개체의 다른 인스턴스에 아무 영향을 줄 수 없습니다.
prototype 개체의 속성과 메서드는 개체의 각 인스턴스에 참조 값으로 복사되므로 모든 인스턴스가 동일한 정보에 액세스할 수 있습니다. 한 인스턴스에서 prototype 속성의 값을 변경하여 기본값을 재정의할 수 있지만 변경 사항은 그 한 인스턴스에만 영향을 줍니다. 다음 예제에서는 사용자 지정 생성자인 Circle을 사용합니다. this 문은 메서드가 개체의 멤버에 액세스할 수 있도록 합니다.

// Define the constructor and add instance specific information.
function Circle (radius) {
this.r = radius; // The radius of the circle.
}
// Add a property the Circle prototype.
Circle.prototype.pi = Math.PI;

function ACirclesArea () {
// The formula for the area of a circle is pi*r^2.
return this.pi * this.r * this.r;
}
// Add a method the Circle prototype.
Circle.prototype.area = ACirclesArea;

// This is how you would invoke the area function on a Circle object.
var ACircle = new Circle(2);
var a = ACircle.area();


이러한 원칙을 사용하여 프로토타입 개체를 사용하는 기존의 생성자 함수의 속성을 추가로 정의할 수 있습니다. 이 작업은 고속 모드가 해제되어 있을 때에만 가능합니다. 자세한 내용은 /fast를 참조하십시오.

예를 들어, Visual Basic의 Trim 함수처럼 문자열에서 선행 공백과 후행 공백을 제거하려면 String 프로토타입 개체에 대해 사용자 정의 메서드를 만들고 스크립트의 모든 문자열에서 자동으로 이 메서드를 상속받도록 합니다. 다음 예제에서는 정규식 리터럴을 사용하여 공백을 제거합니다. 자세한 내용은 Regular Expression 개체를 참조하십시오.


// Add a function called trim as a method of the prototype
// object of the String constructor.
String.prototype.trim = function() {
// Use a regular expression to replace leading and trailing
// spaces with the empty string
return this.replace(/(^\s*)|(\s*$)/g, "");
}

// A string with spaces in it
var s = " leading and trailing spaces ";
print(s + " (" + s.length + ")");

// Remove the leading and trailing spaces
s = s.trim();
print(s + " (" + s.length + ")");


이 프로그램을 /fast- 플래그와 함께 컴파일하면 다음과 같은 결과가 출력됩니다.

leading and trailing spaces (35)
leading and trailing spaces (27)
반응형

'Know > JavaScript' 카테고리의 다른 글

window.createPopup()  (0) 2007.02.21
Disable All Links with JavaScript  (0) 2005.09.23
Disable All Form Elements  (0) 2005.09.23