オブジェクトリテラルが{}.toString()
のようなメソッドtoString()
を呼び出すと、構文エラーが発生しますが、配列リテラルコールtoString()
を呼び出すと問題ありません。変数にオブジェクトリテラルを代入すると、toString()
メソッドを呼び出すとOKになります。どうして?たとえば、次のようになぜ{} .toString()のようなtoString()メソッドをリテラル呼び出しで呼び出すことができないのですか?
var o = {};
o.toString(); // OK
{}.toString();
// > Uncaught SyntaxError: Unexpected token .
[1, 2, 3].toString(); // OK
ありがとう!
詳細に説明できますか?これはなぜ起こりますか?ありがとう。 – zhenguoli
[グループ化](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Grouping)の方が[優先度]が高い(https://developer.mozilla.org/en/ docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table)を[member access](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors#Dot_notation)よりも優先します。 –