将我的对象与字符串连接

Concatenating my object with a string

本文关键字:字符串 连接 对象 我的      更新时间:2023-09-26

这个问题适用于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添加到字符串时弹出的字符串?

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

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

您需要提供一个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.";
}