Por que não consigo acessar uma propriedade de um inteiro com um único ponto?

Se eu tentar escrever

3.toFixed(5) 

existe um erro de syntax. Usando pontos duplos, colocando em um espaço, colocando os três entre parênteses ou usando a notação de suporte permite que ele funcione corretamente.

 3..toFixed(5) 3 .toFixed(5) (3).toFixed(5) 3["toFixed"](5) 

Por que a notação de ponto única não funciona e qual dessas alternativas devo usar?

O período faz parte do número, então o código será interpretado da mesma forma como:

 (3.)toFixed(5) 

Isso dará naturalmente um erro de syntax, pois você não pode seguir imediatamente o número com um identificador.

Qualquer método que impeça o período de ser interpretado como parte do número funcionaria. Eu acho que a maneira mais clara é colocar parênteses em torno do número:

 (3).toFixed(5) 

Você não pode acessá-lo por causa de uma falha no tokenizer do JavaScript. O Javascript tenta analisar a notação de ponto em um número como um literal de ponto flutuante, então você não pode segui-lo com uma propriedade ou método:

2.toString(); // raises SyntaxError

Como você mencionou, há algumas soluções alternativas que podem ser usadas para que os literais de números também funcionem como objects. Qualquer um desses é igualmente válido.

 2..toString(); // the second point is correctly recognized 2 .toString(); // note the space left to the dot (2).toString(); // 2 is evaluated first 

Para entender mais sobre o uso de objects e propriedades, confira o Javascript Garden .

Ele não funciona porque o JavaScript interpreta o 3. como sendo o início de uma constante de ponto flutuante (como 3.5 ) ou então uma constante inteira de ponto flutuante (com 3. == 3.0 ), então você não pode seguir por um identificador (no seu caso, um nome de propriedade). Não reconhece que você pretendia o 3 e o . ser dois tokens separados.

Qualquer uma das suas soluções parece boa para mim.