[توصيات ذات صلة: دروس فيديو JavaScript، واجهة الويب الأمامية]
ستستكشف هذه المقالة مفهومًا مثيرًا للاهتمام للغاية، وهو طرق السمات للأنواع الأساسية. ماذا عن ذلك، هل أنت مرتبك قليلاً؟ دعني أخبرك ببطء ~
في لغات البرمجة الشيئية الأخرى، مثل Java
و C++
، تعد السمات مفهومًا فريدًا للكائنات، والنوع الأساسي هو النوع الأساسي، ولا يوجد مفهوم لطرق السمات.
نعم، إنها فكرة سيئة أخرى JavaScript
. محركها يسمح لنا باستخدام أساليب الملكية لمعالجة الأنواع الأساسية من البيانات مثل الكائنات.
قبل شرح هذه الخاصية الغريبة يجب علينا أولا توضيح ما الفرق بين الأنواع الأساسية وأنواع الكائنات؟
JavaScript
؛7
أنواع أساسية في JavaScript
، وهي: String
، Number
، Boolean
، BigInt
، Symbol
، null
و undefined
؛{ }
{ }
إنشاء قيم متعددة ويمكن تخزينها؛JavaScript
أيضًا على أنواع أخرى من الكائنات، مثل الوظائف؛ وسيتمتغطيتها في كائن موجه. الميزة الرئيسية لإدخال الكائنات هي التغليف ، والذي يمكنه تخزين جميع أنواع البيانات والأساليب الفوضوية في كائن واحد الكائن، وبالتالي تقليل تعقيد الاستخدام.
على سبيل المثال:
اسمح للمستخدم = { الاسم: "شياومينغ"، مرحبًا() { console.log("مرحبا، أنا ${this.name}`); }}user.hello();
نقوم بتغليف سمات وأساليب user
الكائن في كائن، بحيث يكون استخدامه سهلًا للغاية، ونحتاج فقط إلى استخدام obj.attr
لاستدعاء الأساليب أو السمات.
ومع ذلك، فإن القيام بذلك ينطوي على حمل إضافي (الكائنات الموجهة لها حمل إضافي)، وهو أيضًا حيث تكون لغة C++
الموجهة للكائنات أبطأ من C
ككائنات هناك مشكلتان يصعب التوفيق بينهما عند استخدام الأنواع الأساسية ككائنات:
"abc".toUpperCase()
؛JavaScript
تحل المشكلات المذكورة أعلاه بطريقة "بسيطة" للغاية:
String
Number
Boolean
Symbol
معنى القواعد المذكورة أعلاه هو أن النوع الأساسي لا يزال نوعًا أساسيًا، ولكن ماذا لو أردنا الوصول إلى أساليب وخصائص النوع الأساسي، فسنقوم بتغليف النوع الأساسي في كائن (غلاف الكائن) وبعد ذلك
تدميره بعد اكتمال الوصول. لأكون صادقًا، يبدو الأمر سخيفًا بعض الشيء.
مثال
Let name = "Trump";console.log(name.toUpperCase());// طرق الوصول إلى الأنواع الأساسية،
نتائج تنفيذ الكود أعلاه هي كما يلي:
يبدو أنه لا توجد مشكلة كبيرة، ولكن حدثت أشياء كثيرة، ونحن بحاجة إلى معرفة النقاط التالية:
name
هو نوع سلسلة أساسي، ولا يوجد شيء خاص بهname
، وهو ملف يحتوي على كائن خاص له قيمة سلسلة. يحتوي هذا الكائن على طريقة toUpperCase
؛toUpperCase
إلى إرجاع سلسلة جديدة ؛ولا تتغير قيمة المتغير نفسه، كما يلي:
على الرغم من أن الحل مليء بالتسويات (الأفكار السيئة)، إلا أن النتيجة لا تزال جيدة، والإنجازات التي تم تحقيقها هي كما يلي:
على الرغم من أن هذا صحيح من الناحية النظرية، في الواقع تم تحسين محرك JavaScript
بشكل كبير لهذه العملية، وأظن أنه لا ينشئ كائنات إضافية على الإطلاق. لقد ذكر شفهيًا أنه اتبع القواعد، كما لو كان لديه حقًا شيء مؤقت.
تقدم هذه المقالة بشكل مختصر مفهوم أساليب الكتابة الأساسية ولا تشرح الطرق المختلفة مع استمرار البرنامج التعليمي في التعمق، سيتم تضمين عدد كبير من الأساليب تدريجيًا. نحن هنا ندرج فقط بإيجاز بعض الأساليب والخصائص الشائعة الاستخدام للأنواع الأساسية.
الأنواع الأساسية المختلفة لها أساليب سمات مختلفة، وهي مدرجة في الفئات التالية:
سمة طول،
length
طول السلسلة
console.log("abc".length);
تقوم طريقة indexOf(ch)
بإرجاع الحرف الأول ch
في السلسلة
console.log("abc".indexOf('b'));console.log("abc".indexOf('d'))
; نتائج تنفيذ التعليمات البرمجية هي كما يلي:
عندما يكون الحرف موجودًا في السلسلة، يتم إرجاع الفهرس (الذي تم حسابه من 0
)، وإذا لم يتم العثور عليه، يتم إرجاع -1
.
طريقة concat(str)
، لصق سلسلتين
Let str1 = "hello";let str2 = "world!";console.log(str1.concat(str2));console.log(str1);console.log(str2 );
نتائج تنفيذ التعليمات البرمجية هي كما يلي:
replace(str1,str2)
، استخدم str2
لاستبدال str1
console.log
(str);
على النحو التالي:
toFixed(num)
، وتقريب الكسور العشرية إلى الدقة المحددة
console.log
(9.3333333.toFixed(0));
طريقة toString()
، تحويل الأرقام إلى سلاسل
3.14.toString();// تحويل إلى '3.14'console.log((8).toString(2));// تحويل إلى ثنائي '1000'console.log((( 9).toString(2));// تحويل إلى ثنائي '1001'console.log((996).toString(16));// تحويل إلى سلسلة سداسية عشرية '3e4'
نتائج تنفيذ التعليمات البرمجية هي كما يلي:
طريقة toExponential()
، تم تحويلها إلى طريقة العد الأسي
3.1415926.toExponential
(3));
على النحو التالي:
سيتم عرض المزيد من الأساليب في الفصول اللاحقة، لذلك لن أخوض في التفاصيل هنا.
مثل Java
، يمكن JavaScript
إنشاء "مغلفات كائنات" للأنواع الأساسية من خلال عامل التشغيل new
. لا يُنصح بهذا الأسلوب على الإطلاق ، وهو مذكور هنا فقط لمعرفة التكامل.
هناك مشاكل في هذا الأسلوب، على سبيل المثال:
Let num = new Number(0);console.log(typeof num);console.log(typeof 0);
نتائج تنفيذ التعليمات البرمجية هي كما يلي:
أو سيكون هناك ارتباك في الحكم:
Let Zero = new Number(0);if (zero) { // الصفر صحيح لأنه كائن console.log('true');}
نتيجة تنفيذ التعليمات البرمجية هي كما يلي يلي:
في الوقت نفسه، لا تنس أن وظيفة String/Number/Boolean
بدون (كلمة رئيسية) new
يمكنها تحويل قيمة إلى النوع المقابل: إلى سلسلة أو رقم أو قيمة منطقية (النوع الأصلي).
على سبيل المثال:
console.log(typeof Number('123'));
ملاحظة:
لا يحتوي النوعان
null
وundefined
على أي طرق
توفر الأنواع الأساسية بخلاف null
و undefined
العديد من الطرق المفيدة
على الرغم من استخدام JavaScript
طريقة تنفيذ مخترقة، ولكنها حققت نتائج مرضية نسبيًا، وتدرك السمات واستدعاءات الأساليب للأنواع الأساسية بتكلفة أقل
[توصيات ذات صلة: دروس فيديو JavaScript، الواجهة الأمامية للويب]
ما ورد أعلاه هو كيف تدرك JavaScript أن الأنواع الأساسية لها نفس الشيء؛ السمات والكائنات ككائنات للحصول على تفاصيل الطريقة، يرجى الانتباه إلى المقالات الأخرى ذات الصلة على شبكة التعليمات البرمجية المصدر لمزيد من المعلومات!