ما هو jackout.js؟
Knockout هي مكتبة JavaScript ممتازة تساعدك على إنشاء نص غني واجهة المستخدم مع وظائف عرض جيدة وتحرير باستخدام نموذج بيانات أساسي ونظيف. في أي وقت ، يجب تحديث محتوى واجهة المستخدم المحلي تلقائيًا (على سبيل المثال ، اعتمادًا على التغييرات في سلوك المستخدم أو التغييرات في مصادر البيانات الخارجية) ، يمكن تنفيذ KO بسهولة لك ومن السهل جدًا صيانتها.
1. مخطط علاقة الفئة الرئيسية
الثاني. المسؤوليات الطبقية
2.1. يمكن ملاحظتها (فئة كائن المراقبة العادية)
التنفيذ الداخلي للملاحظة (آخر هو وظيفة):
1. أول إعلان FN اسمه يمكن ملاحظته (يمكن القول أن هذا الفصل)
2. أضف خاصية KO الفريدة أحدث Value لتخزين القيمة التي تم تمريرها بواسطة المعلمة
3. إذا كانت سمة __proto__ الأصلية مدعومة ، فاستخدم hasownproperty لتحديد ما إذا كانت السمة موجودة للوراثة ، والحكم على رمز __proto__ (في فئة Utils)
var cansetPrototype = ({__proto__: []} easuleof array) ؛
4. طريقة init لسمات FN لـ KO.SubscribeBable تهيئة الملاحظة (يضيف بشكل أساسي الاشتراك وينشر السمات ذات الصلة)
5. يمكن ملاحظته بعد ذلك يرث السمات والأساليب المتعلقة بالملاحظة (يمكن ملاحظتها على استراتيجيات التنفيذ قبل تغيير القيمة وبعد تغيير القيمة)
// تحديد النموذج الأولي لـ ObservablesVar obsertablefn = {'EqualityComparer': DatearePripRimitiveAndequal ، peek: function () {return this [obserableLateStvalue] ؛ } ، valuehasmutated: function () {this ['' notifysubscribers '] (هذا [obserableLateStvalue]) ؛ } ، ValuewillMutate: function () {this ['' notifysubscribers '] (هذا [obsertableLateStvalue] ،' beforechange ') ؛ }} ؛6. إرجاع تنفيذ الطريقة التي يمكن ملاحظتها (إذا تم تعيين المعلمات الواردة ، وإذا لم تكن هناك معلمة ، فهي تحصل عليها)
7- توفر هذه الفئة أيضًا النمط HasProtype (لتحديد ما إذا كان المثيل المحدد يحتوي على هذه الخاصية) ، محدد (لتحديد ما إذا كان المثيل المحدد هو كائن مراقبة) ، IsWritableBservable (لتحديد ما إذا كان كائن مراقبة قابل للكتابة).
2.2. Observablearray (فئة كائن مراقبة الصفيف)
1. قم أولاً بتنفيذ طريقة KO.Observable لجعل كائنها فئة قابلة للمراقبة (النتيجة المسماة) ؛
2. ثم قم بتوسيع كائن FN في Ko.ObservableArray (Ko.ObservableArray's FN يعيد كتابة طرق التشغيل المتعلقة بالأسلوب ، مثل الإزالة ، والدفع ، وما إلى ذلك)
3. تمديد طريقة من خلال تمتد (TrackArrayChanages ، انظر 2.5 للحصول على التفاصيل)
4. إرجاع كائن النتيجة الموسعة.
ko.ObservableArray = function (initialValues) {initialValues = inialValues || ] Ko.ObservableArray ['fn']) ؛ return result.extend ({'trackArrayChanges': true}) ؛} ؛2.3. اشترك (اشترك فئة كائن)
1. الوحدات الوظيفية للاشتراك والنشر هي فئات أساسية أساسية للملاحظة وملاحظة.
2. هناك طريقة قابلة للتصرفات هنا ، والتي تستخدم للاشتراك في مراقبة تغييرات الكائنات. للتنمية ، يمكنك استخدام نقطة الميراث هذه للدخول.
الاشتراك: دالة (رد الاتصال ، callbackTarget ، الحدث) {var self = this ؛ event = event || defaultevent ؛ var boundcallback = callbackTarget؟ callback.bind (callbackTarget): callback ؛ var الاشتراك = new Ko.subscription (self ، boundcallback ، function () {ko.utils.arrayRemoveItem (self._subscriptions [event] ، chuccription) ؛ if (self.aftersubscriptionRemove) (self.beforesubscriptionadd) self.beforesubscriptionadd (الحدث) ؛ إذا (! self._subscriptions [event])3.extend: يتم استخدام هذه الطريقة لإضافة فئة التمديد التي تمت إضافتها بواسطة طريقة تمديد (مثل فئة تمديد changetracking Observablearray.
4. سيتم تنفيذ طريقة تمديد التمديد مباشرة بعد تسجيل كائن المراقبة. المعلمات التي تم تمريرها هي الهدف (الكائن الحالي) والخيارات (تم تمرير المعلمات عند استدعاء التمديد)
5. Extred هي طريقة تثبيت الامتداد ، وسيقوم بتنفيذ الرمز على الفور في الامتداد.
2.4. يمتد (فئة كائن المراقبة الموسعة)
1. كو مجموعة الامتداد الافتراضية
2. توفير طريقة AppliceStends لتثبيت الامتداد
الدالة ApplyExtenders (requestedExtenders) {var target = this ؛ if (requestedExtenders) {ko.utils.objectoreach (requestedextenders ، function (key ، value) {var extenderhandler = ko.extenders [key]2.5. Observablearray.ChangetRacking (تطبيق محدد لكائن المراقبة الموسع)
1. هذا الامتداد ينفذ بشكل أساسي مراقبة تغييرات الصفيف ، ثم يحسب الاختلافات في الصفيف ، ويؤدي إلى أحداث الاشتراك ذات الصلة
2. cachedifffforknownoperation: عمليات ذاكرة التخزين المؤقت على المصفوفات لمقارنة الاختلافات
3. Be ForsubscriptionAdd و ayrsubscriptionRemove الاشتراكات ذات الصلة (غير مفهومة تمامًا حتى الآن).
ما سبق هو تحليل متعمق لتحليل رمز مصدر خروج المغلوب الذي أدخله المحرر لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!