Concatenar mi objeto con una cuerda
Frecuentes
Visto 140 veces
2
Esta pregunta es para objetos en Javascript.
Me doy cuenta de que puedo agregar una cadena y un objeto de error muy bien, y el texto del objeto de error se concatena sin problemas.
try {
throw new Error('Sample Text');
} catch (error) {
document.writeln('There was an error. ' + error); // Go plus sign!
}
Esta salida There was an error. Error: Sample Text
lo cual es genial. El objeto Error sabía qué cadena quería concatenar. Mis propios objetos no se comportan bien así.
var myObject = (function () {
var text = 'Text I want to concat.',
get_text = function () { return text; },
that = {};
that.get_text = get_text;
return that;
}());
document.writeln('What does my object say: ' + myObject); // Uncool
Mis propias salidas de objetos What does my object say: [object Object]
y no actúa bien como lo hace el objeto Error.
No quiero [object Object]
para ser salida. ¿Cómo puedo cambiar qué cadena escupe myObject cuando se agrega a una cadena?
2 Respuestas
3
Debes darle a tus objetos un toString
método que devuelve la cadena adecuada. Entonces solo necesitas cambiar el nombre get_text
a toString
. Podrías escribirlo algo como esto:
var myObject = (function () {
var text = 'Text I want to concat.';
return {
toString : function () { return text }
};
}());
respondido 10 mar '12, 07:03
1
Debe proporcionar un método toString(), como en el lenguaje de programación Java.
(La gente siempre le da mucha importancia a las diferencias entre los idiomas, pero en realidad comparten algunas similitudes notables, como esta).
Por ejemplo, mira este fragmento de código:
function Apple() {
this.toString = function() {
return "I'm an Apple!"
}
}
var apple = new Apple();
document.write(apple);
Para los objetos existentes, puede agregar un método toString de esta manera:
existingObject.prototype.toString = function() {
return "I am an existing objet.";
}
respondido 10 mar '12, 07:03
Gracias. Votaría su respuesta pero no tengo suficiente reputación. >.< - garth smith
JavaScript es sólo superficialmente similar a Java. En realidad, es lo que harías si tomaras Scheme y Self y los obligaras a hacer algo que se pareciera a Java y se comportara como Java. Pero en realidad es muy diferente: mucho más funcional, tipificado dinámicamente, basado en prototipos... - Tikhon Jelvis
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript object or haz tu propia pregunta.
Gracias. Solo tuve que cambiar el nombre de get_text a toString y todo funcionó. - garth smith