هناك 5 قيم أصلية في JS ، 6 أنواع من الحكم ، و 9 منشئات مدمجة أصلية.
هذا 569 يشكل أساس لغة JS.
القيم الخمس الأصلية هي: الأرقام والأحرف والطلاوى والخالية من غير المحددة
يمكن أن يحكم Typeof: الأرقام ، الشخصيات ، المنطقية ، الكائن ، الوظيفة ، غير المحددة. لاحظ أن NULL والصفائف ، اكتب كلا كائن الإخراج.
لا يمكن لـ typeof التمييز بين المصفوفات والأشياء. كيف تحكم على الأنواع؟ استخدم object.prototype.toString.apply ().
if (value && typeof value === 'Object' && value.constructor === Array)
إذا تم إنشاء الكشف أعلاه في إطارات ونوافذ مختلفة ، فسيتم إعطاء خطأ ، وسيكون كائن النافذة مختلفًا.
طريقة موثوقة هي إذا (Object.prototype.toString.apply (value) === "[كائن صفيف]")
صفيف الوسائط ليس صفيفًا ، إنه مجرد كائن له سمة عضو طول.
كما هو موضح في المثال التالي ، فإن الوسائط ليست صفائف عادية
نسخة الكود كما يلي:
var a = function () {
var b = object.prototype.toString.apply (الوسيطات) ؛
console.log (b) ؛
}
A () ؛ // الإخراج [وسيطات الكائن]
نسخة الكود كما يلي:
var a = function () {
var c = [] ؛
var b = object.prototype.toString.apply (c) ؛
console.log (b) ؛
}
A () ؛ // الإخراج [صفيف الكائن]
كيف يحدد مثيل ما إذا كان المثيل مثيلًا
الخصائص في النموذج الأولي لها مُنشئ.
خاصية النموذج الافتراضي هي كائن كائن يمكن تعيينه على أي قيمة معقدة ، تجاهل الإعداد إلى القيمة الأصلية.
على الرغم من أنه كل شيء ، إلا أنه مميز ، وربط السلسلة الدائرية كل مثيل بخاصية النموذج الأولي في مُنشئها. هناك رابط خفي بين المثيل وسمة النموذج الأولي للمُنشئ ، وهو __proto__ المثيل. في الوقت نفسه ، يتم الحصول على سمة مُنشئ المثيل من خلال مُنشئ مُنشئ النموذج الأولي للدالة.
ومع ذلك ، يجب أن نحتفظ بالمُنشئ ، بحيث يمكن أن يكون للمثال الجديد سمة المنشئ ، ويمكننا أيضًا استخدام مثيل للحكم.
نسخة الكود كما يلي:
var foo = function () {}
foo.prototype = {constructor: foo}
var fooinstance = new foo ؛
fooinstance .__ proto __ === foo.prototype ؛ // true
fooinstance.constructor === foo ؛ //حقيقي
في الواقع ، لا يعتمد الحكم على مثيل الحكم على المُنشئ ، ولكن على سلسلة النموذج الأولي ، كما هو موضح في المثال التالي
نسخة الكود كما يلي:
var foo = function () {} ؛
foo.prototype = {} ؛
var fooinstance = {} ؛
fooinstance .__ proto __ = foo.prototype ؛
console.log (fooinstance مثيل foo) ؛ // صحيح
استخدم القيم الأصلية ، لا مُنشئين
ما هي القيم الخاطئة: خطأ ، "" ، لاغية ، 0 ، -0 ، نان ، غير محددة ، هذه خاطئة ، والبعض الآخر صحيح
ولكن يرجى الانتباه إلى المثال التالي
نسخة الكود كما يلي:
var a = boolean (false) ؛
var b = new Boolean ("") ؛
إذا (أ) {console.log (a) ؛} // لا يمكن الإخراج
if (b) {console.log (b) ؛} // boolean {[[primitiveValue]]: false} جديد يعادل كائن ، فهو ليس خطأ
المقالة أعلاه نظرية أكثر بقليل ، ولكن هذه هي الأساس للغة JavaScript ، ويجب أن تفهمها بوضوح.