현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.
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
명세
브라우저 호환성
특성 | 크롬 | 파이어폭스 (게코) | 인터넷 익스플로러 | 오페라 | 사파리 |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
특성 | 안드로이드 | 안드로이드 크롬 | 모바일 파이어폭스 (게코) | 모바일 인터넷익스플로러 | 모바일 오페라 | 모바일 사파리 |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |