في الوقت الحاضر ، يستخدم العديد من الأشخاص كائنات JS لتنفيذ التعليمات البرمجية بعد تعلم JSP ، ولكن في JavaScript ، تعتبر كائنات JS لغة ديناميكية. العديد من الأصدقاء الذين بدأوا للتو سيكونون فضوليين حول ما هي أساليب الكتابة الموجهة نحو الكائنات في JavaScript؟ ما الفرق؟ اسمحوا لي الآن أن أشرح طرق الكتابة والاختلافات الموجهة للكائن JavaScript.
في JS ، هناك عمومًا طريقتان لتنفيذ OOP:
الأول: استخدم هذه الكلمة الرئيسية
وظيفة class1 ()
{
this.onclick = function (e)
{
لـ (var i = 0 ؛ i <1000 ؛ i ++)
{
var a = new date () ؛
}
}
}
باستخدام هذا. يمكن أن تضيف الطريقة خصائص وطرق إلى الكائنات بمرونة ، وهي مشابهة لمعظم لغات OOP ، ويمكن إضافتها حتى أثناء التشغيل.
النوع الثاني: استخدم الكلمات الرئيسية النموذجية
وظيفة clickfunc (e)
{
لـ (var i = 0 ؛ i <1000 ؛ i ++)
{
var a = new date () ؛
}
}
وظيفة class2 ()
{
}
class2.prototype.onclick = clickfunc ؛
من حيث الاستخدام ، لا يوجد أول واحد يبدو مرنًا. ومع ذلك ، قبل أن يكون الكائن جديدًا ، يمكنك أيضًا إضافة خصائص وطرق كائن ما في أي وقت.
لكنها ليست متساوية. من الناحية النسبية ، أفضّل الطريقة الأولى لأن الطريقة الأولى مركزة نسبيًا وأسهل قراءة الكود. ومع ذلك ، عند الجري ، تختلف كفاءة التشغيل بشكل كبير. لنلقي نظرة على رمز الاختبار أدناه:
var total = new array () ؛
وظيفة test1 ()
{
var a = new date () ؛
لـ (var i = 0 ؛ i <10000 ؛ i ++)
{
var c = new class1 () ؛
//total.push(C) ؛
}
var b = date new () ؛
ALERT (B.GetTime ()-A.GetTime ()) ؛
}
وظيفة test2 ()
{
var a = new date () ؛
لـ (var i = 0 ؛ i <10000 ؛ i ++)
{
var c = class2 () جديد ؛
//total.push(C) ؛
}
var b = date new () ؛
ALERT (B.GetTime ()-A.GetTime ()) ؛
}
الخطوة الأولى هي اختبار وقت التنفيذ: لقد وجد أن Test1 () يستغرق 142 مللي ثانية ، في حين أن Test2 () لا يستغرق سوى 50 مللي ثانية. من حيث كفاءة الوقت ، تكون طريقة النموذج الأولي أكثر كفاءة من هذا.
الخطوة الثانية من كائنات JavaScript هي اختبار استخدام الذاكرة ، وإزالة التعليقات على Total.push (C) ؛ في total.push (c) ؛ بحيث تتم إضافتها إلى الصفيف لمنع الكائنات غير المشروعة من GC عندما يكون هناك العديد من الكائنات عند إنشائها. نتيجة لذلك ، وجد أن الفجوة لم تكن كبيرة جدًا. استحوذت الطريقة الأولى على عشرين أو ثلاثين مترًا من الذاكرة ، في حين أن الطريقة الثانية لم تتطلب سوى أكثر من مائة كل.
جافا سكريبت إنشاء كائن
سبب الاستدلال:
عند معالجة هذين الرموبين ، يكون النوع الأول هو JS Parser ، مما ينشئ طريقة منفصلة لكل كائن ، مما يزيد من النفقات العامة للذاكرة ويزيد من وقت التشغيل عند إنشاء الأساليب. النوع الثاني هو أن JS Earser ، مثل معظم مترجم OOP ، يخزن شرائح بيانات الكائن وشرائح الطريقة بشكل منفصل. بالنسبة للبيانات الخاصة للكائن ، يتم وضع نسخة واحدة لكل كائن ، ويتم وضع هذه الطرق في قطاع الطريقة العامة ، بحيث يمكن تقليل وقت التشغيل والذاكرة.
ما سبق هو محرر Fo Xin لشرح الاختلافات في أساليب الكتابة الموجهة للكائنات واختلافات JavaScript. إذا كنت تريد أن تعرف بعمق أكبر ، فيمكنك الذهاب إلى قناة Fo Xin Technology لفهمها.