2012-03-10 53 views
2

此问题用于Javascript中的对象。使用字符串连接我的对象

我注意到我可以添加一个字符串和一个错误对象就好了,错误对象文本连接在一起没有问题。

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]输出。如何在添加到字符串时更改string myObject吐出的字符串?

回答

3

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

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

谢谢。我只需要将get_text的名称更改为toString,并且一切正常。 – 2012-03-10 07:42:38

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."; 
} 
+0

谢谢。我会投你的答案,但我没有足够的声誉。 >。< – 2012-03-10 07:56:09

+0

JavaScript只是*表面*类似于Java。实际上,如果你使用Scheme和Self,并将它们强制为某种看起来像Java的类似Java的行为,那么这是一种你会做出的。但它确实非常不同 - 功能更强大,动态类型化,基于原型... – 2012-03-10 08:42:39