1

你好呀,

我昨晚刚从 C#/C++ 转到 JavaScript,我很喜欢它!

我刚刚遇到了一些我不理解的行为,想知道是否有人可以对此有所了解?

当我调用这个脚本时,我得到了显示“5.5”的预期警报框,但是在该框关闭后,我收到另一个警报,只是显示“未定义”,任何人都可以对此有所了解吗?

下面的代码:

var myObj = {

age : 5,
weight : 5.5,

toString : function(){
    alert(this.weight);
}

}

alert(myObj.toString());

非常感谢

4

1 回答 1

7

您的代码调用alert()了两次。

第一个警报是显示的this.weight。但随后第二个显示从函数返回的任何值myObj.toString(),并且由于您在没有显式返回值undefined的情况下编写了该函数,因此默认情况下返回。

通常一个.toString()函数实际上会返回一个字符串,所以你应该这样做:

toString : function(){
    return this.weight.toString();
}

然后你会得到一个警报,如下所示:http: //jsfiddle.net/eph7x/

实际上,您可以简单地使用:

alert(myObj);

...因为您的自定义.toString()将被自动调用。

于 2013-10-11T11:57:44.793 回答