你好,
我昨晚刚从C#/ C ++转到JavaScript,我很喜欢它!
我刚刚遇到一些我不明白的行为,想知道是否有人可以对此有所了解?
当我调用这个脚本时,我得到的预期警告框显示为“5.5”,但是在该框关闭后我得到另一个警告只是显示“未定义”,有人可以对此有所了解吗?
以下代码:
var myObj = {
age : 5,
weight : 5.5,
toString : function(){
alert(this.weight);
}
}
alert(myObj.toString());
非常感谢
答案 0 :(得分:6)
您的代码调用alert()
两次。
第一个警告是显示this.weight
的警报。但是第二个显示从myObj.toString()
函数返回的任何值,并且由于您编写了没有显式返回值的函数,因此默认返回undefined
。
通常.toString()
函数实际上会返回一个字符串,所以你应该这样做:
toString : function(){
return this.weight.toString();
}
然后您将获得一个警报,如下所示:http://jsfiddle.net/eph7x/
然后你可以简单地使用:
alert(myObj);
...因为您的自定义.toString()
会自动调用。