2017-06-02 6 views
0

オブジェクトスコープ内の呼び出しがオブジェクトを返す間に、ウィンドウスコープ内のPersonを呼び出す理由が[オブジェクトオブジェクト]を返すのはなぜですか?ウィンドウスコープ内のコール関数がオブジェクトスコープと異なる理由

enter image description here

enter image description here

+0

まあ、ちょうど 'Person.callを(しませんjavascriptのゲッター/セッターの

function Person(first, last) { this.something = { first, last }; } f = {}; Person.call(f, "fsd", "fsd"); console.log(f.something); g = window; Person.call(g, "fsd", "fsd"); console.log(g.something);

詳細ウィンドウ、...) '。それは 'window.name'を設定しようとします。そして、いいえ、これはスコープとは関係ありません。もしあなたが 'this'キーワードを参照するなら、それは呼び出しの*コンテキスト*または*受信者*です。 – Bergi

答えて

0

window.nameウィンドウの名前を設定するためのゲッター/セッターです。したがって、タイプはstringでなければなりません。

はこれを試してみてください:

あなたは今window.name"something,else"に設定されていることがわかります。これはArray.toString()の結果です。

これはまさにここで起こっていることです。 objecttoStringに電話すると、[object Object]となります。

定義済みのwindow.nameゲッター/セッターを使用しないと、プログラムは正常に機能します。

セッター:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/set

ゲッター:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/get

関連する問題