반응형
출처: http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/jscript7/html/constructor.asp
고급 개체 만들기
JScript는 사용자 지정 프로토타입 기반 개체를 사용하여 상속을 지원합니다. 프로토타입 기반 개체는 상속을 통해 동적으로 추가 또는 제거가 가능한 공통의 속성과 메서드를 공유할 수 있습니다. 더욱이, 각 개체는 기본 동작을 재정의할 수 있습니다.
프로토타입 기반 개체의 인스턴스를 만들려면 먼저 생성자 함수를 정의해야 합니다. 자세한 내용은 생성자 함수를 사용하여 사용자 정의 개체 만들기를 참조하십시오. 일단 이 생성자가 작성되면 그 자체가 모든 생성자의 속성인 prototype 개체의 속성을 사용하여 상속받은 속성과 공유 메서드를 만들 수 있습니다. 생성자는 인스턴스에 한정된 정보를 개체에 제공하며, prototype 개체는 개체에 한정된 정보와 메서드를 개체에 제공합니다.
참고 개체의 모든 인스턴스에 영향을 주려면 그 생성자의 prototype 개체를 변경해야 합니다. 개체의 한 인스턴스의 prototype 속성을 변경해서는 동일 개체의 다른 인스턴스에 아무 영향을 줄 수 없습니다.
prototype 개체의 속성과 메서드는 개체의 각 인스턴스에 참조 값으로 복사되므로 모든 인스턴스가 동일한 정보에 액세스할 수 있습니다. 한 인스턴스에서 prototype 속성의 값을 변경하여 기본값을 재정의할 수 있지만 변경 사항은 그 한 인스턴스에만 영향을 줍니다. 다음 예제에서는 사용자 지정 생성자인 Circle을 사용합니다. this 문은 메서드가 개체의 멤버에 액세스할 수 있도록 합니다.
이러한 원칙을 사용하여 프로토타입 개체를 사용하는 기존의 생성자 함수의 속성을 추가로 정의할 수 있습니다. 이 작업은 고속 모드가 해제되어 있을 때에만 가능합니다. 자세한 내용은 /fast를 참조하십시오.
예를 들어, Visual Basic의 Trim 함수처럼 문자열에서 선행 공백과 후행 공백을 제거하려면 String 프로토타입 개체에 대해 사용자 정의 메서드를 만들고 스크립트의 모든 문자열에서 자동으로 이 메서드를 상속받도록 합니다. 다음 예제에서는 정규식 리터럴을 사용하여 공백을 제거합니다. 자세한 내용은 Regular Expression 개체를 참조하십시오.
이 프로그램을 /fast- 플래그와 함께 컴파일하면 다음과 같은 결과가 출력됩니다.
leading and trailing spaces (35)
leading and trailing spaces (27)
고급 개체 만들기
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();
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 + ")");
// 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 |