في JavaScript و String و Number و Bolean كلها أنواع أساسية بدائية ، أي الأوتار والقيم العددية والقيم المنطقية غير موجودة في شكل كائنات. ومع ذلك ، نظرًا لأن هذه الأنواع البدائية الثلاثة تحتاج إلى تشغيلها ، فإن 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) ؛ // undefined
console.log (s === "اختبار") ؛ // صحيح
تجدر الإشارة إلى أن متغير S في الكود أعلاه يمثل دائمًا سلسلة بدائية. يوجد كائن السلسلة تلقائيًا بواسطة JavaScript أثناء تنفيذ عمليات S.Length أو S.Newvariable. يمكن التحقق من ذلك من السطر الأخير من التعليمات البرمجية في التجربة أعلاه.
بالإضافة إلى تغليف القيم البدائية تلقائيًا ، يمكن للمطورين أيضًا اختيار إجراء العملية المقابلة يدويًا. على عكس التغليف التلقائي ، لا يتم تدمير الكائنات الناتجة التي تم الحصول عليها عن طريق التغليف اليدوي على الفور ، لذلك فإن عمليات كتابة الممتلكات التي تم التقاطها للكائنات المغطاة يدويًا منطقية:
نسخة الكود كما يلي:
var t = سلسلة جديدة ("اختبار") ؛
T.Length = 9 ؛
console.log (t.length) ؛ // لا يزال 4 ، حيث تتم قراءة سمة الطول فقط
T.Newvariable = 9 ؛
console.log (t.newvariable) ؛ // 9
console.log (t == "اختبار") ؛ // صحيح
console.log (t === "اختبار") ؛ // false