Pregunta

No tienen valor para volver toString() para ser capaz de llamar a valor.toString()?Cuando usted sabe que usted puede llamar valor.toString()?

<script>
var newList = function(val, lst)
{
  return {
    value: val,
    tail:  lst,
    toString: function() 
    {
      var result = this.value.toString();
      if (this.tail != null)
        result += "; " + this.tail.toString();
      return result;
    },
    append: function(val)
    {
      if (this.tail == null)
        this.tail = newList(val, null);
      else
        this.tail.append(val);
    }
  };
}

var list = newList("abc", null); // a string
list.append(3.14); // a floating-point number
list.append([1, 2, 3]); // an array
document.write(list.toString());
</script>

Otros consejos

Como El señorBrillante y Nuevo los estados, todos En JavaScript los objetos tienen un toString método.Sin embargo, ese método no es siempre útil, especialmente para clases personalizadas y literales de objeto, que tienden a volver cadenas como "[Object object]".

Usted puede crear su propio toString métodos mediante la adición de una función con ese nombre a la clase prototipo, así:

function List(val, list) {
    this.val = val;
    this.list = list;

    // ...
}

List.prototype = {
    toString: function() {
        return "newList(" + this.val + ", " + this.list + ")";
    }
};

Ahora, si se crea un new List(...) y llame a su toString método (o ejecutar a través de cualquier función u operador que lo convierte en una cadena implícitamente), personalizado toString método será utilizado.

Por último, para detectar si un objeto tiene un toString método definido para su clase (tenga en cuenta que esto no trabajo con la creación de subclases o literales de objeto;que se deja como ejercicio para el lector), se puede acceder a sus constructor's prototype propiedad:

if (value.constructor.prototype.hasOwnProperty("toString")) {
    alert("Value has a custom toString!");
}

document.write, como window.alert, llama al método toString de su argumento antes de escribir o devolver algo.

Otras respuestas son correctas que toString existe en todos los objetos Javascript.

Sin embargo, en general, si desea saber si existe una función en su objeto, puede probarla así:

if (obj.myMethod) {
    obj.myMethod();
}

Esto, por supuesto, no garantiza que myMethod sea una función en lugar de una propiedad. Pero presumiblemente lo sabrás.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top