我在下面有这个javascript代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<script>
function Person(first, last) {
this.first = first;
this.last = last;
}
Person.prototype.toString = function() {
return this.first + this.last;
}
var person = new Person("John", "Dough");
alert(person); // same result since alert calls toString()
</script>
</head>
<body>
</body>
</html>
问题是为什么alert(person)
显示“JohnDough”?对我来说,alert(person)
不应该显示任何内容。
答案 0 :(得分:5)
使用alert
时,该方法会隐式尝试在对象上调用toString
。在您的情况下,toString
已定义,并在明确调用toString
时执行您所期望的操作。如果您尚未定义toString
,则alert
将使用toString
的本地Object
方法并返回“[object Object]”,如@FelixKling所指出的
答案 1 :(得分:1)
这是因为该对象具有toString()方法。 alert()需要一个字符串,并且如果对象存在则将使用此方法,否则将使用自己的内置字符。这里的方法返回forename和surname,这就是你在alert()对话框中得到的。