Em JavaScript, String, Number e Boolean são todos tipos básicos primitivos, isto é, Strings, Valores numéricos e valores booleanos não existem na forma de objetos. No entanto, como esses três tipos primitivos precisam ser operados, o JavaScript encapsulará automaticamente esses três tipos de valores, para que eles tenham propriedades e métodos como objetos. Tomando string como exemplo, esse processo de encapsulamento é o seguinte:
1. Quando o JavaScript Encontra o acesso à propriedade ou as chamadas de método para valores da string, a nova string (String Value) será chamada para encapsular automaticamente a string em um objeto String.
2. O JavaScript acessará as propriedades ou métodos do objeto recém -criado e retornará o resultado correspondente.
3. Após a conclusão do acesso à propriedade ou do método, o JavaScript destruirá imediatamente o objeto recém -criado.
Como exemplo, não faz sentido escrever atributos para objetos de string criados automaticamente pelo JavaScript, porque o objeto criado não existe mais após o término da declaração de gravação:
A cópia do código é a seguinte:
var s = "teste";
S.Length = 9;
console.log (s.length); // ainda 4
S.NewVariable = 9;
console.log (s.newvariable); // indefinido
console.log (s === "teste"); // true
Vale a pena notar que a variável S no código acima sempre representa uma sequência primitiva. O objeto String criado automaticamente pelo JavaScript existe durante a execução de operações de S.Length ou S.NewVariable. Isso pode ser verificado na última linha de código no experimento acima.
Além de encapsular automaticamente os valores primitivos, os desenvolvedores também podem optar por executar manualmente o processo correspondente. Diferentemente do encapsulamento automático, os objetos resultantes obtidos pelo encapsulamento manual não são destruídos imediatamente; portanto, as operações de gravação de propriedades realizadas para objetos encapsulados manualmente fazem sentido:
A cópia do código é a seguinte:
var t = new String ("teste");
t.Length = 9;
console.log (t.length); // ainda 4, como o atributo de comprimento é apenas leitura
t.NewVariable = 9;
console.log (T.NewVariable); // 9
console.log (t == "teste"); // true
console.log (t === "teste"); // false