Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

이 페이지는 영어로부터 커뮤니티에 의하여 번역되었습니다. MDN Web Docs에서 한국 커뮤니티에 가입하여 자세히 알아보세요.

Object.prototype.toString()

BaselineWidely available

Object 객체의 메서드인toString() 은 해당 object를 표현하는 문자열을 반환합니다. 이 메서드는 사용자가타입 강제 변환을 통해 파생된 객체에서 재정의할 수 있습니다.

시도해 보기

function Dog(name) {  this.name = name;}const dog1 = new Dog("Gabby");Dog.prototype.toString = function dogToString() {  return `${this.name}`;};console.log(dog1.toString());// Expected output: "Gabby"

구문

js
toString();

매개변수

기본적으로toString()은 매개변수가 없습니다. 그러나 이 메서드를 재정의한Object를 상속받은 객체의 경우 매개변수를 취할 수 있습니다. 예를들어,Number.prototype.toString()BigInt.prototype.toString() 메서드의 경우 선택적으로 기수(radix)를 매개변수로 취합니다.

반환 값

객체를 표현하는 문자열을 반환합니다.

설명

자바스크립트는객체를 원시 값으로 변환하기 위해toString 메서드를 호출합니다. 당신은toString 메서드를 직접 부를 일이 거의 없습니다. 자바스크립트는 원시 값이 있어야 할 곳에서 객체를 마주치면 자동으로 해당 메서드를 호출합니다.

이 메서드는문자열 변환에 의해 우선적으로 호출되지만,숫자 변환원시 타입 변환valueOf()를 우선적으로 호출합니다. 그러나 기본valueOf() 메서드는 객체를 반환하므로, 그 객체가valueOf()를 재정의하지 않았다면 보통toString() 메서드가 마지막에 호출됩니다. 예를들어,+[1]1을 반환하는데, 그 이유는+[1]toString() 메서드가"1" 을 반환하고 이 값이 숫자로 변환되기 때문입니다.

Object.prototype를 상속받는 모든 객체(null-프로토타입 객체를 제외한)들은toString() 메서드를 상속받습니다. 커스텀 객체를 만들 때toString()를 재정의할 수 있고, 재정의된 메서드를 호출하여 커스텀 객체를 문자열 값으로 변환할 수 있습니다. 또 다른방법으로는@@toPrimitive 메서드를 추가하여 타입 변환 과정을 넘어서는 조정을 할 수 있고, 이는 타입 변환 과정에서 항상valueOf 또는toString 보다 우선시됩니다.

재정의된 객체에서 기본Object.prototype.toString()를 사용하기 위해서(혹은null 이나undefined에서 호출하기 위해서),Function.prototype.call() 혹은Function.prototype.apply()에 살펴볼 객체를 첫번째 매개변수(이를thisArg라고 함)로 넣어 호출합니다.

js
const arr = [1, 2, 3];arr.toString(); // "1,2,3"Object.prototype.toString.call(arr); // "[object Array]"

Object.prototype.toString()"[object Type]"을 반환하는데, 여기서Type은 객체의 타입입니다. 만약 객체가 문자열 값인Symbol.toStringTag 특성을 가지고 있다면 그 값이Type이 됩니다.MapSymbol을 포함한 많은 내장 객체들이Symbol.toStringTag를 가지고 있습니다. ES6 이전에 생성된 몇몇 객체들은Symbol.toStringTag가 없지만 특별한 태그를 가지고 있습니다. 이는 아래와 같습니다(아래에 제공된 타입 이름과 동일한 태그를 가지고 있습니다).

arguments 객체는"[object Arguments]"를 반환합니다.Symbol.toStringTag가 재정의되지 않은 사용자 정의된 클래스들을 포함한 다른 객체들은"[object Object]"를 반환할 것입니다.

Object.prototype.toString()nullundefined에서 호출되면 각각[object Null][object Undefined]를 반환합니다.

예제

기본toString 메소드 재정의

기본toString() 메서드 대신에 호출될 함수를 정의할 수 있습니다.toString() 메서드는 인자를 취하지 않고 문자열을 반환합니다. 직접 생성한toString() 메서드는 원하는 어떤 값이든 될 수 있지만 해당 객체에 대한 정보를 전달하고 있을 때 가장 유용할 것입니다.

다음 코드는Dog 객체 타입을 정의하고Dog 타입을 따르는theDog를 생성합니다:

js
function Dog(name, breed, color, sex) {  this.name = name;  this.breed = breed;  this.color = color;  this.sex = sex;}theDog = new Dog("Gabby", "Lab", "chocolate", "female");

커스텀 객체의toString() 메서드를 호출하는 경우Object로부터 상속받은 기본 값을 반환하게 됩니다:

js
theDog.toString(); // returns [object Object]

다음 코드는 기본toString() 메서드를 재정의하는dogToString()을 생성하고 할당합니다. 이 함수는 객체의 name, breed, color, sex를 포함하는 문자열을 "property = value;"의 형태로 만들어냅니다.

js
Dog.prototype.toString = function dogToString() {  var ret =    "Dog " +    this.name +    " is a " +    this.sex +    " " +    this.color +    " " +    this.breed;  return ret;};

앞선 코드를 사용하면 문자열 컨텍스트에서theDog가 사용될 때마다 JavaScript는 자동으로dogToString() 함수를 호출하여 다음 문자열을 반환합니다:

js
"Dog Gabby is a female chocolate Lab";

toString()으로 객체 클래스 검사

toString()은 모든 객체에 사용되어 해당 객체의 클래스를 가져올 수 있습니다. Object.prototype.toString()을 모든 객체에 사용하기 위해서는Function.prototype.call()Function.prototype.apply()를 사용해서 검사하고자 하는 객체를thisArg로 불리는 첫번째 파라미터로 넘겨야 합니다.

js
var toString = Object.prototype.toString;toString.call(new Date()); // [object Date]toString.call(new String()); // [object String]toString.call(Math); // [object Math]// Since JavaScript 1.8.5toString.call(undefined); // [object Undefined]toString.call(null); // [object Null]

명세서

Specification
ECMAScript® 2026 Language Specification
# sec-object.prototype.tostring

브라우저 호환성

같이 보기

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp