"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنك تحديد فئة الكائن في جافا سكريبت؟

كيف يمكنك تحديد فئة الكائن في جافا سكريبت؟

تم النشر بتاريخ 2024-12-21
تصفح:247

How Can You Determine the Class of an Object in JavaScript?

فهم الطبيعة الديناميكية لجافا سكريبت: تحديد فئات الكائنات

على النقيض من لغات مثل جافا، تفتقر جافا سكريبت إلى معادل مباشر لـ .getClass() في جافا الطريقة بسبب تصميمها الفريد القائم على النموذج الأولي. ومع ذلك، هناك تقنيات مختلفة لتحقيق وظائف مماثلة.

خيارات تحديد فئات الكائنات في JavaScript:

  • typeof: إرجاع نوع البيانات (على سبيل المثال، "كائن"، "وظيفة") للمتغير.
  • مثيل: اختبارات ما إذا كان الكائن ينتمي إلى فئة معينة أو ينحدر منها.
  • obj.constructor: يشير إلى وظيفة المنشئ التي أنشأت الكائن.
  • func.prototype، proto.isPrototypeOf: يسمح بالتحقق من الميراث عن طريق التحقق مما إذا كان النموذج الأولي هو كائن النموذج الأولي.

أمثلة:

الدالة Foo() {} var foo = new Foo(); typeof Foo; // == "الوظيفة" typeof fo; // == "الكائن" foo مثيل Foo؛ // == صحيح foo.constructor.name; // == "فو" Foo.name // == "Foo" Foo.prototype.isPrototypeOf(foo); // == صحيح Foo.prototype.bar = الوظيفة (x) {return x x;}; foo.bar(21); // == 42
function Foo() {}
var foo = new Foo();

typeof Foo; // == "function"
typeof foo; // == "object"

foo instanceof Foo; // == true
foo.constructor.name; // == "Foo"
Foo.name // == "Foo"

Foo.prototype.isPrototypeOf(foo); // == true

Foo.prototype.bar = function (x) {return x x;};
foo.bar(21); // == 42

ملاحظة: يمكن لأدوات التصغير مثل Uglify تعديل أسماء الفئات. لمنع ذلك في أدوات الإنشاء مثل Gulp أو Grunt، اضبط المعلمة --mangle على false.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3