JavaScript를 사용하면 기능을 기본 유형으로 확장할 수 있습니다. 예를 들어 Object.prototype에 메서드를 추가하여 모든 객체에서 해당 메서드를 사용할 수 있도록 할 수 있습니다. 이 접근 방식은 함수, 배열, 문자열, 숫자, 정규식 및 부울 값에 동일하게 적용됩니다.
예를 들어 Function.prototype에 메소드를 추가하여 모든 함수에서 사용할 수 있도록 할 수 있습니다.
Function.prototype.method = function(name, func) { this.prototype[name] = func; return this; }
Function.prototype에 메소드 메소드를 추가한 다음 메소드를 추가합니다. 프로토타입을 작성할 필요 없이 method 메소드를 직접 호출합니다. 예를 들어 JavaScript에는 정수 유형이 없습니다. Number.prototype에 정수 메소드 클래스를 추가하여 이를 구현할 수 있습니다.
Number.method("integer", function(){ return Math[this < 0 ? 'ceil' : ''floor'](this); }); console.log((-10 / 3).integer()); //out put -3
기본형에 메소드를 추가함으로써 언어의 표현력을 대폭 향상시킬 수 있습니다. JavaScript 프로토타입 상속의 동적 특성으로 인해 새 메소드는 메소드가 추가되기 전에 생성된 객체를 포함하여 모든 객체 인스턴스에 즉시 할당됩니다.
기본형의 프로토타입은 공개 구조체이므로 클래스 라이브러리 사용 시 주의가 필요합니다. 안전한 방법은 메서드가 존재하지 않는다고 확신하는 경우에만 메서드를 추가하는 것입니다. 예:
Function.prototype.method = function(name, func) { if (!this.prototype(name)) { this.prototype[name] = func; } return this; };