MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Object.prototype.valueOf()

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

valueOf() 메소드는 특정 객체의 원시 값을 반환한다.

구문

object.valueOf()

반환값

특정 객체의 원시값

설명

자바스크립트는 어떤 객체를 원시값으로 변환하기 위해  valueOf 메소드를 호출한다. 이 메소드를 직접 호출할 필요는 거의 없다; 원시값이 기대되는 곳에서 어떤 객체를 만났을 때 자바스크립트가 알아서 그것을 호출하기 때문이다.

기본적으로,  valueOf 메소드는 Object 로 부터 모든 객체에 상속된다. 모든 내장 객체가 적당한 값을 반환하기 위해 이 메소드에 우선한다. 만약 어떤 객체가 원시값을 가지고 있지 않다면, valueOf 가 객체 자신을 반환한다.

자신만의 코드내에서 내장객체를 원시값으로 변환하기 위해 valueOf 를 사용할 수 있다.  커스텀 객체를 생성할 때, 기본 Object 메소드 대신 커스텀 메소드를 호출하기 위해 Object.prototype.valueOf() 를 덮어쓸 수 있다.

커스텀 객체를 위해 valueOf 덮어씌우기

기본 valueOf 메소드 대신 호출될 함수를 생성할 수 있다. 그 함수는 매개변수가 없어야 한다.

myNumberType 의 객체 형태가 있고 그 객체의 valueOf 메소드를 생성하기 원한다고 하자. 다음의 코드는 그 객체의 valueOf 메소드에 사용자 정의 함수를 할당한다:

myNumberType.prototype.valueOf = function() { return customPrimitiveValue; };

놓인 앞선 코드에서 어떤 myNumberType 객체 형태가 원시값으로 표현되는 문맥에서 사용되는 언제든 자바스크립트가 자동으로 앞선 코드에서 정의된 그 함수를 호출한다.

어떤 객체의 valueOf 메소드는 일반적으로 자바스크립트에 의해 호출되나 다음과 같이 직접 호출도 가능하다:

myNumber.valueOf()

주의: toString() 메소드를 통한 문자열 맥락에서의 객체 변환은 valueOf를 사용한 문자열 원시형태로의 String 객체변환과 다르다. 오직 [object type]일 경우라면 모든 객체는 문자열 변환을 가진다. 그러나 많은 객체가 숫자, 불리언, 혹은 함수로 변환되진 않는다.

예시

valueOf 사용

function myNumberType(n) {
    this.number = n;
}

myNumberType.prototype.valueOf = function() {
    return this.number;
};

myObj = new myNumberType(4);
myObj + 3; // 7

명세

명세 상태 비고
ECMAScript 1st Edition (ECMA-262) Standard 초기 정의. 자바스크립트 1.1에서 시행됨.
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.prototype.valueOf' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.prototype.valueOf' in that specification.
Standard  
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Object.prototype.valueOf' in that specification.
Draft  

브라우저 호환성

특성 크롬 파이어폭스 (게코) 인터넷 익스플로러 오페라 사파리
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
특성 안드로이드 안드로이드 크롬 모바일 파이어폭스 (게코) 모바일 인터넷익스플로러 모바일 오페라 모바일 사파리
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

함께 보기

문서 태그 및 공헌자

 이 페이지의 공헌자: whitetofu
 최종 변경: whitetofu,