0

私は以下の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) 何も表示しないでください。

4

2 に答える 2

5

を使用する場合alert、メソッドは暗黙的にオブジェクトに対してaを呼び出そうとしtoStringます。あなたの場合、toStringは定義されており、明示的にを呼び出すときに期待することを実行しますtoStringtoStringを定義していなかった場合は、@ FelixKlingが指摘しているようにalert、のネイティブtoStringメソッドを使用してObject「[objectObject]」を返します。

于 2013-01-15T15:06:39.670 に答える
1

これは、そのオブジェクトにtoString()メソッドがあるためです。alert()には文字列が必要であり、オブジェクトが存在する場合はこのメソッドを使用し、存在しない場合は独自の組み込みメソッドを使用します。ここでのメソッドは名前と名前を返すので、alert()ダイアログでそれを取得します。

于 2013-01-15T15:07:02.463 に答える