2017-08-29 5 views
0
var foo = {unique_prop: 1}, bar = {unique_prop: 2}, object = {}; 
object[foo] = 'anu'; 
console.log(object[bar]); 

上記のコードは "anu"を出力します。プロパティ名のJavascript toStringメソッド

toStringメソッドは、文字列以外のオブジェクトを文字列オブジェクトに型キャストします。

上記のコードでは、object[bar]は値を「anu」として出力します。 「fooとbarの両方が同じ文字列に変換されるので、」

Documentは、私はこのコード上のJavaスクリプトtoString方法を理解することができないことはでき

を言います。

誰でもどのように動作するのか説明できますか?

+0

使用機能の参照、彼らはほとんどまったく同じではありません。 – Teemu

答えて

7

あなたがプロパティ名としてfooの値を使用する場合、それは上書きされない場合は、だから、実際にあなたが持っている'[object Object]'

あるすべてのオブジェクト、同じ値を返しますobject[foo.toString()] = 'anu'ようfootoStringを呼び出し、名前は'[object Object]'のプロパティです。 以下console.logは、あなたに名前が'[object Object]'のプロパティがあることを保証します。プロパティ名として

var foo = {unique_prop: 1}; 
 

 
var object = {}; 
 

 
object[foo] = 'anu'; 
 

 
console.log(`foo.toString() - ${foo.toString()}`); 
 
console.log(`object.toString() - ${object.toString()}`); 
 
console.log(`object.toString() === foo.toString() ? - ${object.toString() === foo.toString()}`); 
 

 
for(var prop in object) { 
 
    console.log(prop); 
 
}

+0

ありがとう@Suren Srapyan。コードの機能を明確に説明しました。今、疑いがなくなった。再度、感謝します。 – Asha

関連する問題