Object.prototype.toString()

Sumário

O método toString() retorna uma string representando o objeto.

Experimente

Sintaxe

obj.toString()

Descrição

Todo objeto possui um método toString() que é chamado automaticamente quando o objeto precisa ser representado como um valor em texto ou quando o objeto é referenciado de uma maneira que requeira uma string. Por padrão, o método toString() é herdado de todo objeto descendente de Object. Se e o método não é sobrescrito em um objeto personalizado, toString() retorna "[object type]", onde type é o tipo do objeto. O código a seguir ilustra isso:

var o = new Object();
o.toString();           // retorna [object Object]

Nota: Starting in JavaScript 1.8.5 toString() called on null returns [object Null], and undefined returns [object Undefined], as defined in the 5th Edition of ECMAScript and a subsequent Errata. See Using toString to detect object type.

Examples

Exemplo: Sobrepondo o método inicial toString

Você pode criar uma função para ser chamada no lugar do método toString(). O método toString() não requer parâmetros e deve retornar uma string. O método toString() criado por você pode ter o valor que quiser, mas será mais útil se usar informações do objeto.

O código abaixo define o objeto Dog e cria theDog, um objeto do tipo Dog:

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');

Se você chamar o método toString() neste objeto, ele retornará o valor original herdado de Object:

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

O código abaixo cria e faz com que dogToString() sobrescreva o toString() original. Esta função gera uma string contendo name, breed, color, and sex do objeto, na forma de "propriedade = valor;".

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

Usando este código, toda vez que theDog for usado em um texto (string), JavaScript automaticamente chamará a função dogToString(), a qual retornará:

Dog Gabby is a female chocolate Lab

Exemplo: Usando toString() para detectar a classe do objeto

toString() pode ser usado com qualquer objeto e permite que você determine sua classe. Para usar Object.prototype.toString() com qualquer objeto, deverá chamar Function.prototype.call() ou Function.prototype.apply() nele, passando o objeto que quer inspecionar como o primeiro parâmetro, chamado thisArg.

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.5
toString.call(undefined);   // [object Undefined]
toString.call(null);        // [object Null]

Especificações

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

Compatibilidade

BCD tables only load in the browser

Veja também