مقدمة
نعلم جميعًا أن أنواع بيانات JavaScript تنقسم إلى فئتين: الأنواع الأساسية (أو الأنواع البدائية) وأنواع المرجع.
قيم الأنواع الأساسية هي قطاعات بسيطة من البيانات المخزنة في ذاكرة المكدس ، ويتم الوصول إليها بالقيمة. هناك خمسة أنواع أساسية في JS: غير محددة ، لاغية ، منطقية ، العدد ، والسلسلة.
قيمة نوع المرجع هي كائن مخزّن في ذاكرة الكومة ، ويتم الوصول إلى قيمته بالرجوع. الأنواع المرجعية هي بشكل أساسي كائن ، صفيف ، وظيفة ، regexp ، والتاريخ.
تحتوي الكائنات على خصائص وطرق ، لذلك ليس من المستغرب أن نرى الكود التالي.
var favs = ['Egg' ، 'Lotus Pot'] ؛ favs.push ('Okra') ؛ console.log (favs) ؛ // ["Egg" ، "Lotus Pot" ، "Okra"] console.log (favs.length) ؛ // 3Array هو نوع مرجعي ، لذلك يمكن أن يكون له سمات (طول) وطرق (دفع) بشكل طبيعي ، وهو أمر طبيعي مثل الاضطرار إلى تناول الآيس كريم في الصيف. ولكن ، انظر إلى الكود التالي وفكر فيه بعناية ، هل هذا ، هذا ، قانوني؟
var RealMessage = "قال أنا أحبك لكنني كذبت" ؛ var mymessage = RealMessage.SubString (5،15) ؛ console.log (mymessage) ؛ //"أحبك"
هناك فتاة حزينة ستقوم بأسلوب "السلسلة الفرعية" بأداء طريقة "Subctring" عن عمد على سلسلة تستخدم لتفكك ، ثم مشاهدة القطع والسعادة. ولكن ، ولكن ، أليس كذلك أن السلسلة هي نوع أساسي؟ لماذا يمكن أن يكون لها طرق؟ ؟ هل هناك أي قانون ملك آخر ، سيد تشينغتيان!
في الواقع ، كل هذا بسبب شيء يسمى "نوع التغليف الأساسي". هذا النوع الأساسي للتغليف صادق بشكل خاص ، وهو الحقيقي "إعادة الملابس بعد الأمر ، وإخفاء المزايا والشهرة"!
نوع التغليف الأساسي
بالإضافة إلى الأنواع المرجعية مثل الكائن والمصفوفة المذكورة في البداية ، توفر لنا JavaScript أيضًا ثلاثة أنواع مرجعية خاصة: السلسلة والرقم والطليف ، مما يسهلنا لتشغيل الأنواع الأساسية المقابلة.
استمر في إلقاء نظرة على المثال أعلاه لسلاسل القطع. هل لاحظت أنه على الرغم من استخدام طريقة السلسلة الفرعية ، فإن قيمة المجال نفسه لن تتغير. استدعاء هذه الطريقة لا تُرجع سوى سلسلة جديدة.
هذا ما يفعله نوع التغليف الأساسي. في الأصل ، ليس لديك طريقة ، ولكن عندما تريد استخدامها ، يمكنك فقط ضبطها ونوع التغليف الأساسي المقابل له هذه الطريقة. على سبيل المثال ، طريقة السلسلة الفرعية أعلاه ، من المستحيل على النوع الأساسي من السلسلة أن يكون له هذه الطريقة ، ولكن نوع التغليف من السلسلة يحتوي عليها ، سوف يهمس ويعيد النتيجة بعد تنفيذ هذه الطريقة. عند التنفيذ إلى:
حدث الكثير من الأشياء عندما يكون realmessage.substring (5،15) خط الرمز هذا.
أولاً ، سوف يقرأ قيمة عالم من الذاكرة. عندما تكون في وضع القراءة هذا ، تبدأ الخلفية في العمل. يصف JS Elevation هذه الإجراءات المكتملة في الخلفية مثل هذا:
1. إنشاء مثيل من نوع السلسلة ؛
2. استدعاء الطريقة المحددة على المثيل ؛
3. تدمير هذه الحالة
يمكن شرح المثال أعلاه في كود مثل هذا:
var _realmessage = سلسلة جديدة ("قال أنا أحبك لكنني كذبت") ؛ var mymessage = _realmessage.substring (5،15) ؛ _ RealMessgae = null ؛ // تدمير بعد تسمى الطريقةلذلك ، وبهذه الطريقة نفهم أن سلسلة النوع الأساسية تنفذ طريقتها الخاصة ، ولكن الخلفية تنشئ سلسلة من نوع التفاف الأساسي المقابل لها. يقوم بتثبيت مثيل بناءً على قيمة النوع الأساسي ، مما يتيح هذا المثيل استدعاء الطريقة المحددة ، وأخيراً تدمير نفسه ، وهو يتحرك.
انتبه إلى ميزة "تدمير" الخطوة الأخيرة من نوع الغلاف الأساسي ، والتي تحدد أنه لا يمكننا إضافة خصائص وطرق مخصصة إلى قيم النوع الأساسية.
var me = "sunjing" ؛ me.age = 18 ؛ console.log (me.age) ؛ // undefined
أضفت سمة العمر إلى سلسلة "ME" ، ويتم تعيين القيمة لتكون جميلة 18 عامًا. ومع ذلك ، عندما وصلت مرة أخرى ، اختفت هذه السمة. هذا لأنه:
عند تنفيذ السطر الثاني من تعيين سمة الكود ، يتم إنشاء مثيل لنوع الغلاف الأساسي في الخلفية. يتم بالفعل معلقة في هذه السمة العمرية على الحالة ، ولكن بعد ذلك مباشرة ، يتم تدمير الحالة. عند التنفيذ إلى السطر الثالث ، يتم إعادة إنشاء مثيل جديد لنوع الغلاف الأساسي ، وبطبيعة الحال لا توجد سمة من العمر.
إظهار نوع التغليف الأساسي
بالإضافة إلى السلسلة في وضع القراءة ، ستساعدنا الخلفية على إنشاء مثيل نوع Wrapper الأساسي ، والذي يمكننا عرضه أيضًا.
var str = new string ("Hello") ؛ var str2 = str.touppercase () ؛ console.log (str2) ؛ // "Hello:هذا يختلف عن ما يتم حفظه في المتغير عندما تساعدنا الخلفية في إنشاء.
var str1 = سلسلة جديدة ("Hello") ؛ var str2 = "hello"لخص
بفضل نوع التغليف الأساسي ، يكون الأمر أكثر ملاءمة بالنسبة لنا لتشغيل الأنواع الأساسية الثلاثة من السلسلة والطلاوى والرقم. عندما تتم قراءة قيم النوع الأساسي الثلاثة هذه ، ستقوم الخلفية بإنشاء مثيل نوع التفاف المقابل. سيتصل هذا الحالة بالطريقة المحددة وسيتم تدميرها بعد الاتصال. تحدد دورة الحياة القصيرة هذه أنه لا يمكننا إضافة خصائص وطرق مخصصة إلى الأنواع البدائية.
المقالة أعلاه لديها فهم عميق لسبب امتلاك السلاسل في جافا سكريبت. هذا هو كل المحتوى الذي أشاركه معك. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.