В JavaScript, строке, номере и логии - все это примитивные основные типы, то есть строки, численные значения и логические значения, не существуют в форме объектов. Однако, поскольку эти три примитивных типа необходимо работать, JavaScript автоматически инкапсуляет эти три типа значений, чтобы они обладали свойствами и методами в качестве объектов. Принимая строку в качестве примера, этот процесс инкапсуляции выглядит следующим образом:
1. Когда JavaScript встречается с доступом к свойствам или вызовам метода к значениям строки, будет вызвана новая строка (строковое значение) для автоматического инкапсуляции строки в объект строки.
2. Javascript будет получить доступ к свойствам или методам вновь созданного объекта и вернет соответствующий результат.
3. После завершения вызова доступа к свойствам или методу JavaScript немедленно уничтожит недавно созданный объект.
В качестве примера, не имеет смысла писать атрибуты в строки объектов, автоматически созданных JavaScript, поскольку созданный объект больше не существует после завершения оператора записи:
Кода -копия выглядит следующим образом:
var s = "test";
S.Length = 9;
Console.log (S.Length); // все еще 4
s.newvariable = 9;
Console.log (s.newvariable); // не определен
console.log (s === "тест"); // true
Стоит отметить, что переменная S в приведенном выше коде всегда представляет примитивную строку. Строковой объект, автоматически созданный JavaScript, существует во время выполнения операций S.Length или S.NewVariable. Это может быть подтверждено из последней строки кода в вышеуказанном эксперименте.
В дополнение к автоматическому инкапсулированию примитивных значений, разработчики также могут выбрать вручную выполнить соответствующий процесс. В отличие от автоматической инкапсуляции, полученные объекты, полученные с помощью ручной инкапсуляции, не сразу же разрушаются, поэтому операции записи свойства, взятые для инкапсулированных объектов вручную, имеют смысл:
Кода -копия выглядит следующим образом:
var t = new String ("test");
t.length = 9;
console.log (t.length); // все еще 4, как атрибут длины только читается
t.newVariable = 9;
Console.log (t.newvariable); // 9
console.log (t == "test"); // true
console.log (t === "test"); // false