用字符串连接我的对象

时间:2012-03-10 07:28:04

标签: javascript object

这个问题适用于Javascript中的对象。

我注意到我可以添加一个字符串和一个Error对象,并且Error对象文本连接没有任何问题。

try {
    throw new Error('Sample Text');
} catch (error) {
    document.writeln('There was an error. ' + error); // Go plus sign!
}

输出There was an error. Error: Sample Text非常酷。 Error对象知道我想要连接的字符串。我自己的对象并不像这样表现得很好。

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

我自己的对象输出What does my object say: [object Object]并且不像Error对象那样表现得很好。

我不希望输出[object Object]。如何在添加到字符串时更改myObject吐出的字符串?

2 个答案:

答案 0 :(得分:3)

您应该为对象提供一个返回相应字符串的toString方法。因此,您只需将get_text重命名为toString即可。你可以这样写:

var myObject = (function () {
    var text = 'Text I want to concat.';
    return {
      toString : function () { return text }
    };
}());

答案 1 :(得分:1)

您需要提供toString()方法,就像在Java编程语言中一样。

(人们总是在语言不同的情况下做出如此重要的事情,但实际上,他们有一些显着的相似之处,就像这样。)

例如,看看这段代码:

function Apple() {
    this.toString = function() {
        return "I'm an Apple!" 
    }
}

var apple = new Apple();
document.write(apple);

对于现有对象,您可以通过以下方式添加toString方法:

existingObject.prototype.toString = function() { 
    return "I am an existing objet.";
}