كل الحق، حتى اليوم، انا ذاهب الى أن نتحدث حول جافا سكريبت وكيف انها مختلفة من لغات أخرى التي قد تكون تستخدم لمثل PHP. لذلك في المحاضرة الأخيرة على الاثنين، تحدثنا قليلا حول ما هو مماثل، ما هو مألوفة بين جافا سكريبت وPHP أو بيثون أو روبي أو C أو لغات أخرى ان كنت بالفعل دراية. ولكن في الواقع جافا سكريبت لديه قطة فريدة من نوعها حقا على نموذج الكائن الذي يجعل انها نوع من مختلف تماما من معظم اللغات التي وأنت تسير في التعامل معه. حتى وظائف هي نوع من حق قدرها المفهوم في جافا سكريبت. أنها هي وسيلة أقوى من هم بلغات أخرى لأن ما في وسعهم في - لسبب واحد، انهم قادرة على أن تكون تعيين كقيم. حتى هنا لدينا فار س يساوي ظيفة وانها من الدرجة الأولى القيمة التي يمكن أن تنتقل حول كوسيطة. لذلك لم يكن لديك ل تعلن وظيفة س ومجرد استخدام س في هذا النطاق. يمكنك تمرير قيمة x في أي مكان في جميع أنحاء، كما تعلمون، كوسيطة في وظيفة أخرى حيث يمكنك تصدير الوحدة النمطية كما ذكر داود في العقدة. وبالتالي فإن النقطة التالية هي أن وظيفة هو الاعتراض في جافا سكريبت. حتى تتمكن من تحديد الواقع خصائص كقيم على وظيفة وعلاج فقط انها ترغب في ذلك هو كائن. حتى عند العمل مع مسج، كما تعلمون، أن الدولار ثم قمت بتمرير محدد فيه وتحتج بأنها وظيفة. ولكن بعد ذلك عليك أيضا لقد الدولار دوت AJAX. وهذا لا نوع من معنى إذا كنت تعتقد وظيفة تماما كما يجري شيء يمكنك استدعاء أو الاتصال. ولكن جافا سكريبت يسمح لك ل تعيين خصائص على وظائف خصائص ثابتة كما مع مجرد خ someProp نقطة كما أشرت هناك. النقطة التالية التي نحن ستذهب إلى أكثر من ذلك بقليل في العمق هو حقيقة أن ويمكن علاج ظائف كما الطبقات في جافا سكريبت. لذلك ليس هناك مفهوم هذا المشغل الجديد مما يخلق مثيل جديد من وظيفة جنبا إلى جنب مع نوع من مثل مثل الطبقة الجسم والتي تأتي معها ونحن في طريقنا للذهاب في ذلك أكثر من ذلك بقليل، انه دعا النموذج. وهذا ما يجعل جافا سكريبت فريدة جدا مقارنة لغات أخرى والتي تقوم الطبقة، جافا سكريبت هو النموذج القائم. وبعد ذلك فقط في أسفل هناك، يمكن أن يكون مجرد استدعاء الدالة كما بصراحة اعتدنا على. ذلك أن شيئا جديدا. شيء آخر وهذا هو فريد من نوعه أن المصفوفات هي في الواقع الكائنات. انهم لا يحبون هم في PHP حيث يمكنك إنشاء فقط مجموعة جديدة. هذا هو في الواقع الاختزال لقوله مجموعة جديدة. ومجموعة هو في الواقع فئة فرعية من كائن. بحيث شيء مختلفة وسأذهب في قليلا أكثر التفاصيل في هذا الشأن. وقدرات التصحيح مع جافا سكريبت هي في الواقع لا مثيل لها بقدر ما رأيت. هذا هو لقطة المفتش كروم ونحن في طريقنا لل تستخدم لبقية من العرض اليوم. وللوصول الى هذا، أنت فقط انتقل إلى أدوات الملف المطور وفتح المفتش كروم أو يمكنك النقر بزر الماوس الأيمن وانقر فوق إظهار العنصر الأول أعتقد أنه على صفحة HTML أو أعتقد أنه من الأوامر الخيار J يفتح هذا الأمر. ولكن سنذهب إلى هذا وأنت يمكن أن يحدد في الواقع نقاط التوقف كما كنت من خلال تشغيل رمز JavaScript والفرز من تقييم ما المحلية المتغيرات، ما قيمة هذا هو ويجعل من أسهل طريقة لتصحيح رمز. ولا - هذا ليس مقيدة لتعليمات برمجية من جانب المتصفح ولكن يمكنك فعلا تشغيل مثيل هذا المفتش كروم لخدمة كود جانبكم وهو حقا أنيق لأنك يمكن التنقل خلال سطرا سطرا كما يأتي طلب الدخول الى حسابك الخادم ونرى ما يحدث ولعب مع المتغيرات في وحدة التحكم إلى هنا. لذلك كما ذكرت، وجافا سكريبت هي لغة القائم على النموذج وهو ما يعني أن هناك مجموعة من القيم الافتراضية التي هي نوع مخفي من لكل وظيفة في نقطة الكائن خاصية النموذج. لذلك فمن نوعا من تجزئة قيم افتراضية مختلفة فقط أنه عند استدعاء تعمل مع الكلمة الجديدة، تلك هي التي وضعتها الافتراضي وظائف المتوفرة على سبيل المثال. لذلك هذا هو الواقع فعالة حقا ل- انها وسيلة فعالة ل خلق ذاكرة الأشياء الحكمة لأن جافا سكريبت وقت التشغيل لديها فقط لتتبع من النموذج الأولي للكائن. انها نوع من يشير إلى أن عند طباشيري جديدة مثيل لفئة. ويمكنك أيضا تقليد الميراث كما هو معروف بلغات الطبقي حيث لديك نوع من مثل هذا يمتد ذلك، يمتد التي يمكن أن تحاكي أنه في جافا سكريبت من خلال ما يسمى ب سلسلة النموذج. وسنرى أمثلة حول ذلك. حتى إذا كان لديك - الإضافات مسج في الواقع يوصون مسج الكتاب على استخدام الدولار نقطة FN لإضافة وظيفة إلى مكتبة مسج. ونحن في طريقنا إلى الواقع القفز إلى - لذا، في هذه الصفحة، لدينا الدولار - أنا وشملت مسج. وإذا كنت تفعل الدولار تنتشر في وحدة التحكم التي ذكرتها بذلك لكم من خلال تحول الأمر J أو مجرد الذهاب الى عرض، أدوات المطور، المطور والانتقال إلى علامة التبويب مصادر. [ملاحظة غير مسموع] أوه بالتأكيد. لذلك عندما بدأت اكتب في متغير، انها أكملت السيارات بالنسبة لي ما هو متوفر هناك. لذلك أنا كتبته في الدولار ويمكنني انظر أعتقد كروم لديه بعض المدمج في الدولار، الدولار والدولار خ. حتى الآن أريد فقط الدولار وأنا وضعت في نقطة. ومن ثم فإنه يظهر لي كافة الخصائص المتوفرة على الكائن مسج. ولكن إذا كنت تفعل الدولار دوت النموذج الأولي، أرى الآن كل الطرق التي اعتدت على استخدام عندما يكون لدي الدولار، محدد وبعد ذلك يقيدون قبالة أنه مع، كما تعلمون، إضافة فئة أو إلحاق أو طمس أو أي من مثل. تلك هي كل الواقع على النموذج تحت غطاء محرك السيارة التي في مسج إنشاء مثيل جديد من نفسها وذلك نوع من يخفي جميع تلك التفاصيل منك. وبالتالي فإن النقطة التي كنت مما يجعل الظهر أكثر من هنا مع وظيفة، و في الواقع إخفاء النموذج منك ومجرد اسم مستعار هو إلى الدولار دوت FN. لذلك معظم الناس فعلا لا يدركون أن هناك نموذجا أوليا تحت غطاء محرك السيارة that's - يمكنك الاستفادة من و إضافة وظيفة إضافية إلى كل مثيل مسج إذا كنت ترغب. وبالتالي فإن المشغل "الجديد" هو حقا نوع من الصعب فهم في البداية. عند استدعاء دالة مع "الجديد"، انها مختلفة تماما طريق استدعاء الدالة كما لو كنت فقط ودعا بصراحة. وبالتالي فإن المشغل "الجديد" يخلق ما يسمى مثيل جديد من كائن أو جديدة مثيل، يمكنك التفكير الكائن كطبقة. وعندما يحدث هذا، فإن القيمة هذا والتي قد تكون مألوفة مع من مسج، وضعوا هذا النوع من إلى كل ما هو مناسب في ذلك الوقت. وعادة ما تعيينها ل عقدة DOM الحالي ان كنت على كما كنت تمر مثل كل أو شيء من هذا القبيل. أنها - يفترض هذه القيمة أن تكون قيمة المثال الذي قمت بإنشائه مع "الجديد"، التي تشمل كل شيء على سلسلة النموذج وجميع من الأساليب التي كنت تجد كما خصائص النموذج. لذلك يعتمد على كيفية ويسمى وظيفة، ما قيمة هذا هو. وانها مربكة حقا إذا كنت جديدا على جافا سكريبت. ولكن كل وظيفة وهذا ما يسمى لديه - لديه على هذه القيمة. لذلك حتى لو لم تكن قد أنشأت نسخة جديدة من شيء ما، أن هذا يفترض أن تكون عالمية. أو يمكنك استدعاء دالة باستخدام طريقة الدعوة حيث طريقة تطبيق في جافا سكريبت. يمكنك وظيفة و تحديد ما ينبغي أن يكون هذا. حتى تتمكن من جعلها ديناميكية، التي هي قوية حقا ولكن أيضا يسمح لك أن تفعل الأشياء التي يمكن أن تكون مضللة ومربكة ل مطورين آخرين لو انهم لم تستخدم إلى حقيقة. ومسج، أنا أزعم يجعلها أكثر مربكة من خلال جعلها مريحة وتعيينها إلى عقدة DOM الحالية. ولكن لنتذكر قاعدة بسيطة ما قيمة هذا هو عندما كنت تبحث في مكالمة وظيفية ما تبقى من النقطة. حتى إذا كان لديك كائن وهذا شيء نقطة شيء هي وظيفة ان كنت داعيا ثم القيمة الأولى هي ما قيمة هذا هو. حتى هنا هو المثال رمز أين أنا خلق كائن جديد الحرفي الذي هو مجرد كائن تم إنشاؤها باستخدام الأقواس المتعرجة وأنا وضع اسم لبوب ثم لدي sayName طريقة هنا والتي - حتى داخل هذه sayName لو لم س دوت sayName، قيمة هذا يساوي إلى x لأن اليسار من هو نقطة الدوران. حتى إذا أسميها س نقطة sayName، ذلك أن أقول مرحبا بوب. ثم مثال آخر أين أنا في الواقع تعيين س نقطة sayName، وظيفة إلى Y متغير، والتي كما ذكرت في جافا سكريبت لك يمكن تخصيص وظائف إلى المتغيرات وقتما تشاء، انها مرنة حقا بهذه الطريقة، ولكن الآن عندما أدعو Y، انها فقدت سياق خ. لذلك هذا هو الآن على الصعيد العالمي أو إذا كنت في وضع صارمة، أعتقد انها فارغة أو غير معروف. ولكن - حتى Y ليس ما كنت نتوقع هنا إذا كنت تبحث في العاشر وأنت تسير للاتصال sayName، كنت تتوقع هذا الاسم من المفترض أن يكون بوب. ولكن إذا كنت سحبت تشغيله الكائن ويطلق عليه في حد ذاته، وهذا هو الآن على الصعيد العالمي. وهذا ما كنت بالذكر عندما ترى الدولار دوت هذا، كنت في كثير من الأحيان لا يفكرون في ما يحدث في الواقع على. ولكن لديه نوع من مسج بهم لغة نطاق محدد الخاصة للتعامل مع هذا و انها ليست ما كنت تستخدم لفي جافا سكريبت. وأنا أشير إلى هذه النقطة لأنه من المهم حقا لكتابة جيدة التنظيم وجوه المنحى رمز في جافا سكريبت لديك حقا فهم جيد وفهم كيف يعمل هذا، وكيف يعمل نموذج كائن وكيف يعمل المشغل الجديد. خلاف ذلك، فسوف ينتهي مع السباغيتي مسج حيث كل شيء هو نوع من كل مكان والتعامل فقط مع DOM. إذا كنت تستطيع فعلا إرسال جافا سكريبت بطريقة أكثر تنظيما، فإنه يجعل من الأسهل كثيرا للعمل مع، لفرز فصل من المخاوف من التعامل مع تحديث DOM والتعامل مع المنطق الفعلي ورمز. لذلك دعونا نلقي نظرة على بعض الأمثلة حول ذلك. لذلك لدي بعض الأمثلة هنا. لذلك هذا هو مجرد مثال بسيط استخدام كائن جافا سكريبت وإضافة عدد قليل من الوظائف لذلك ومن ثم خلق نوع من مثل تطبيق مصغر. حتى انها بسيطة جدا في الواقع. الشيء الوحيد الذي ما يفعله هو في البداية فإنه يطالب اسمك. لذلك أنا أقول تيم ثم يمكن أن تغير اسمك إلى بوب. وهذا كل هذا التطبيق لا. ولكن ما أود أن أشير من هو كيف يفعل ذلك. وذلك لدي هذا الاسم مولد الكائن الذي لديه أسلوب البدء الذي يطلب من المستخدم لاسمهم فقط عن طريق استدعاء هذا askForName الذي أسفل هنا أنه لا موجه إذا لم يتم تعيين اسم ثم يسأل عن ذلك مرة أخرى عن طريق استدعاء هذا askForName. ثم بمجرد أن يحصل على اسم، يدعو هذا الاسم التحديث. لذلك هذا ثم تعيين اسم المستخدم في العلامة H1. وإذا كان الاسم غير تعيين، فإنه يطرح خطأ. [ملاحظة غير مسموع] أوه بالتأكيد. لذلك يحدد اسم المستخدم في علامة H1 من خلال الدعوة setDisplayName الذي يحدد HTML في اسم حاوية JS و أنا التقديم كل من بلدي HTML مع محددات JS لمجرد انها عادة جيدة للحصول على في فقط لجعل فإنه ليس كذلك الخلط بين عند استخدام محددات مثل البائع أو فئات لكل من النمط والمنطق في جافا سكريبت الخاصة بك تطبيقات الواجهة الأمامية. لأنه إذا كان لديك مختلفة مجموعات من الناس الذين يعملون على قاعدة رمز ولك يكون هناك محدد أن يقرر مصمم لتغيير لأن هو - لا تبدو كبيرة، لذلك هم يريدون لوضع طبقة جديدة واتخاذ من يدكم وكنت تعتمد على أنه لأغراض جافا سكريبت، ثم يكسر التعليمات البرمجية. أنه من الجيد أن البادئة وفرز من مساحة الاسم مثل تقريبا الطبقات المرتبطة جافا سكريبت أو سمات مع بادئة JS. لذلك هذا هو جميلة بسيطة ويمكنك ان ترى في جميع هذه الحالات أنا العودة يدعو هذا في نهاية المطاف. لذلك هذا هو جيدة العادة للوصول الى، لتعطيك عليه قيمة الإرجاع صالحة. في askForName لست لأن ذلك من المنطقي ان كنت الحصول على اسم الظهر. ولكن ما أن يسمح ثم لك أن تفعل إذا كنت إرجاع هذا التحديث اسم، انها إرجاع القيمة من setDisplayName الذي هو إرجاع القيمة من هذا. والذي يسمح لك لفرز سلسلة كما تعودت لفي مسج من خلال العودة قيمة هذا في كل مرة. وهذا يشير إلى كائنات الحالي لذلك يمكن أن نطلق على هذا نقطة askForName نقطة setDisplayName وسيكون الحفاظ على قيمة هذا وتسمح لك لدينا سلسلة لطيف هناك. ثم في - حتى في هذا المثال الثاني. [وقفة] حسنا. موافق. لذلك دعونا نمضي قدما وفتح وحدة التحكم وانتقل إلى علامة التبويب مصادر بلدي. سنقوم البوب ​​من ذلك في الواقع. حتى في المطور كروم الأدوات التي ذكرتها، هناك هذه القطعة على الحق و- يمكنك ان ترى هذا التوقيع على وقف على الرغم من أن افتراضيا، انها سوداء. ولكن عندما كنت الماوس فوق ذلك، فإنه وتقول "لا وقفة على الاستثناءات. انقر على وقفة جميع الاستثناءات ". وعند النقر فوقه مرة أخرى، فإنه يتحول اللون الأزرق. والآن في أي وقت أن هناك خطأ القيت في شفرة جافا سكريبت الخاصة بك، وأنها سوف وقف عند نقطة وتسمح لك لتقييم ما يحدث. لذلك - وهذا هو حقا مفيد المفهوم هو على وشك أن نشير إلى. ثم إذا قمت بالنقر فوق مرة أخرى، فإنه يتحول الأرجواني وهذا هو عادة ما أظل فيه. وقوعه فقط رمز عندما يكون هناك استثناء لم يتم القبض عليهم. لذلك الكثير من الأوقات في مسج ل مثلا، فإنها محاولة المصيد لاختبار ما إذا كان المتصفح أو لا لديه نوعا من القدرة ويواصل من هناك. هذا هو فقط عندما هناك خطأ أنه لم يكن واقعة في الصيد المحاولة. لذلك دعونا نحاول تقديم و وهو الاسم الذي فارغة. حتى أستطيع أن أرى أن توقفت كود الآن في طريقة updateName واستطيع الماوس فوق أسماء ونرى انها فارغة إلى فارغة. هناك انها تساوي فارغة. حتى إذا لم يسم رمي جديدة خطأ والآن أستطيع أن خطوة الى الوراء من خلال وظيفة العمود ويقول: "حسنا، أين تأتي من هذا "، و ترى ما هي قيمة العميل. لذلك لديه طريقة askForName، setDisplayName بداية وupdateName. وهذا هو مجرد مفيدة حقا الطريقة يمكنك ان ترى على كافة المتغيرات التي تتوفر في هذا النطاق، فضلا كما المتغيرات الإغلاق، لذلك أي شيء مغلق برئاسة هذه الوظيفة. وحتى أستطيع أن أرى ذلك - ما هي قيمة العميل وما قيمة هذا هو. لذلك هذا 'السبب نحن في مسج يساوي إلى العنصر DOM الحالية. ولكن أن يكون مفيدا حقا لتصحيح التعليمات البرمجية لكسر على مثل هذه الأخطاء. ميزة أخرى لل الكروم المفتش أنه في أي لحظة يمكنك انقر على خطوط مختلفة في الصف وأنها سوف كسر في الأماكن حيث قمت بتعيين نقاط التوقف انهم يشار إلى. حتى لو كنت فوق، و خط اللون الأزرق. لذلك اسمحوا لي مواصلة التنفيذ هنا، OK، التي كسرت. والآن دعونا تعيين اسم أليس لوضرب إرسال. حتى الآن أستطيع أن أرى حتى قبل أن وصلت إلى نقطة لتحديث كل شيء، انها الآن توقفت هنا حتى أستطيع أن أرى أن بلدي هذا الاسم هو أليس وبعد ذلك يمكن أن تستمر - اسمحوا لي إعادة تحميل الصفحة. كل الحق، وحتى الآن أنه من ابتداء من الساعة البداية مرة أخرى، فقد توقفت عند هذا خط وأستطيع أن أرى هذا الاسم حاليا غير معروف. askForName هو الذي يعمل عليه هو، بحيث غالبا ما تكون مفيدة أيضا إذا كان لديك مهام التي هي قادمة من ملفات مختلفة أو أماكن مختلفة في رمز، يمكنك أن ترى أين هو، ومن ثم القفز إلى ذلك، فإنه سيتم تسليط الضوء عليه. جيد جدا أن يحصل في العادة استخدام أدوات التصحيح التي ليست فقط تعزية سجل نقطة. حسنا، دعونا نلقي ننظر إلى المثال الثاني الأمر الذي يجعل استخدام أكثر من نماذج كما كنت قد ألمح إلى. حتى في هذا المثال، نحن خلق جديد وظيفة دعا CS وهذا هو رأس المال وبالتالي فإن معيار اتفاقية في جافا سكريبت هو ما إذا كان ومن المفترض أن تستخدم وظيفة كما منشئ، في مقابل لمجرد العادية وظيفة، يمكنك الاستفادة منه. وذلك لدي العاصمة CS وهذا يأخذ courseId متغير وcourseTitle التي أنا وضعت لهذا courseId، هذا courseTitle في المنشئ. وبعد ذلك أيضا تعيين الطلاب والمحاضرات كما صفائف فارغة. وبالتالي فإن السبب الذي كنت - موافق، وبالتالي فإن النموذج وقد تم تحديد خصائص ثم إلى هنا مع - حتى القالب هو مجرد تسطير بسيط القالب، قالب تسطير كونها الطريقة التي يمكن - على غرار القوالب أن داود قد ذكر على الملقم، يمكنك مجرد كتابة علامة النصي وهي ليست جافا سكريبت النصي ولكن النص HTML وما أفعله مع مسج هو - فإنه لا تبقى هذه مفتوحة، نعم، هناك نذهب. مع مسج، هو الحصول على و قيمة HTML من ذلك القالب ومن ثم تشغيله من خلال تؤكد فائدة المكتبات قالب المحرك. وبالتالي فإن وثائق لذلك هو أسفل هنا تحت قالب فائدة ولكن أساسا يمكنك قراءة قليلا أكثر حول هذا الموضوع. ولكن من يقيم هذه السلسلة وتحويله الى وظيفة التي يمكننا ثم تمرير البيانات في واستدعاء بشكل حيوي. طريقتين المقبل لدي هي addStudent وaddLecture. هذه مجرد إضافتها إلى صفائف الداخلية التي لقد حدد في منشئ و ثم جعل الأسلوب. لذلك، دعونا خلق جديدة مثيل CS دعا 164 التي لديها هذه الدورة عدد 164 واللقب. ثم CS50 التي لديها CS50 ومقدمة لCS1 وإضافة ثم بضع محاضرات الطلاب ومن ثم استدعاء CS50 تقديم. وإذا كنت تشغيل التعليمات البرمجية، لذلك وأنا أفعل ذلك مع ايفال. فأنت لا تريد حقا أن استخدام وايفال، ولكن أنا مجرد نوع وأخذ كل جافا سكريبت هذا هنا وتنفيذ ذلك على الطاير. فإنه يجعل في هذا القالب هذه الحالات الجديدة من فئة CS التي لديها الخصائص، لذلك انتقلنا من خلال عمله وaddLecture وaddStudent على كل منها. وكما ذكرت لأنني يعود هذا، أستطيع أن يقيدون في الواقع هذه addLecture وaddStudent المكالمات وانها سوف تعمل فقط كذلك. ميزة أخرى في جافا سكريبت وهذا هو أكثر فائدة على جانب الملقم حيث كنت حقا في أي وقت من الأوقات إذا يحصل التطبيق الخاص بك أكبر لا أعرف من أين أنت وأنه من الصعب تحديد هذه نقاط التوقف الفردية التي ذكرتها في المفتش كروم هو لاستخدام الكلمة المصحح. حتى انها مجرد D-E-B-U-G-G-E-R. وعند وضع المصحح الكلمة في التعليمات البرمجية وكان لديك - هناك نذهب، وهما ع. عند وضع المصحح الكلمة في التعليمات البرمجية وكنت تقوم بتشغيل مصحح مثل كروم مفتش هنا أو كروم جانب الملقم مفتش، فإنه يروي جافا سكريبت لوقف التنفيذ على هذا الخط من رمز وبعد ذلك يسمح لك إلى الخطوة من خلال ما تبقى إعدام رموز. حتى لو كنت فوق رمز المدى هنا، انها وقف الآن في هذا الخط المصحح ويمكنني انظر موافق، وهنا قيمة CS50 وانها حصلت على دورة العنوان، رقم بالطبع، انها حصلت على أي محاضرات، أي طالب. وبعد ذلك يمكن التنقل خلال وaddLecture كله، أستطيع أن أرى أنه دفع على أن هذه المحاضرات، الماوس فوق ذلك، "مرحبا العالم". يمكنني في الواقع في وحدة القيام بذلك حتى يتم تعيين هذا إلى الكائن الحالي التي كنت فيها هذه المحاضرة هو "مرحبا العالم". والحفاظ على خطوة من خلال بقدر ما تريد. إذا كنت لا تريد أن تتدخل في قضية استدعاء دالة " أنا أعرف ما الذي يحدث للقيام الخوض في addLecture، هناك هذا الزر الأيمن هنا التي تقول "الخطوة القادمة على استدعاء دالة "، وهكذا يمكنني أن أذهب إلى نقطة وأنا ربما أتساءل عن شيء. مثل على سبيل المثال 164 تقديم. حتى في هذه النقطة، انها ستكون المقدمة. أستطيع أن أرى هذا القالب هو القالب المترجمة. أستطيع أن أرى في هذه النقطة أنا وينبغي أن يكون اثنين من الطلاب ومحاضرتين. ثم هناك النموذج السلسلة التي كنت في اشارة الى. وبالتالي فإن واحدة الافتراضي الذي يأتي جنبا إلى جنب مع كائن فقط في جافا سكريبت بشكل عام، لأنه يأتي مع اثنين من سلسلة قيمة المنشئ. ثم تلك التي لقد اضيفت في نفسي مع addLecture، addStudent ثم خصائص التي هي فريدة من نوعها لهذا مثيل من فئة كما تم استدعاء ذلك مع الكلمة الجديدة. لذلك دعونا نفعل واحد فقط أكثر على هذا المثال ثم سنقوم خطوة لبعض الأمور أكثر إثارة للاهتمام على جانب الملقم. لذلك دعونا نمضي قدما وفتح هذا المثال الأخير الذي هو - دعونا نرى، حيث هو رمز؟ أنا لا أعرف من أين ذهب هذا. حسنا، حسنا، ونحن قد تخطي فقط على هذا الرمز ثم في الواقع - يا على عقد، وأعتقد أنني غاب ورقة الأنماط لرمز. موافق، لذلك دعونا تجعل هذا أكبر قليلا. في هذا المثال، أنا تظهر أكثر من ذلك بقليل على الإعداد في سلسلة النموذج، وضع حتى يصل الميراث مع جافا سكريبت. حتى في هذه الحالة، لدينا كتالوج التي يجري للحفاظ يفترض دورات متعددة. وهكذا كتالوج لديها وأساليب addCourse. لذلك فإنه يتحقق ما إذا كانت دورة وهذا ما أقر في مثيل بالطبع كما الاحتجاج مع الكلمة الجديدة. حتى إذا كنت تحاول إرسال و في شيء مختلف، وسوف يصيح في أنت. طريقة تجعل والتي سوف تجعل كل من الدورات عن طريق تجميع قالبها أدناه. ونحن لدينا بالطبع وصولا في هذه الحالة الفئة الأساسية ل دورات قسم الفردية. وبدلا من وضع كل الدورة نقطة طريقة النموذج نقطة أو الممتلكات باستخدام تمديد مساعد في المكتبة تسطير لفرز الدعوة تمديد هذا النموذج مع جميع من هذه الخصائص، والتي هي مفيدة، أسهل قليلا للقراءة. ثم القيام إلى هنا ما يعرف وضع في سلسلة النموذج. لذلك هذا هو في الواقع قليلا صعبة على الناس في البداية وحتى بعد أن فعلت هذا لا يزال لحظة، انها نوع من الصعب للالتفاف حول رأسك. ولكن لا تدع ذلك تخويف لكم. لذلك أنا إقامة جديدة - فئة جديدة تماما الاعتراض هنا، CS. وفي المنشئ، أنا أقول بالطبع تطبيق هذا الحجج. لذلك الحجج هو خاص قيمة اعتقد انك يمكن أن يطلق عليه في جافا سكريبت، و الكلمة الذي لديه كل من كل ما هو مرت على طول هي الحجج هي أن وظيفة متاحة مع الحجج الدعوة، مع الكلمة الحجج. وذلك ادعو مع بالطبع دوت تطبيق، هذا هو السياق الحالي التي يتم استدعاء CS. حتى عندما كنت مع استدعاء جديدة انها - انها قيمة CS. وأنا أقول هذه الكلمة طريقة بالطبع هنا. أوه آسف - نسمي هذا طريقة المسار الصحيح هنا ولكن تعيين قيمة هذا أن يكون أيا كانت قيمة هذا هو الحق هنا. بحيث يسمح للالكلمة تنطبق لك نوع من تغيير الدولة من هذا الذي هو كيف مسج يسمح لفرز من التبديل من هذا على لكم و وأنت تسير من خلال وجعل عناصر DOM بدلا من الكائن مسج. حتى الآن أنا ذاهب لتعيين وظيفة مؤقتة والتي سوف انتزاع النموذج الأولي من الدورة. ونوع من تعيينها النموذج الأولي ل ثم قم بتعيين النموذج على الكائن وظيفة CS إلى مثيل جديد من ذلك. وذلك أساسا أنا قائلا بدلا من ذلك - إذا أنا إلى هنا لم CS نقطة النموذج يساوي مسار جديد. بعد ذلك سيكون داعيا كل شيء في هذه الدالة الإنشائية، الذي أود أن لا أراد بالضرورة. لذلك كل ما أفعله هو نوع من خلق تقريبا مثل وظيفة بديلة والتي سيكون الدورات النموذج وعلى ذلك النوع من تقليد النموذج - وبالطبع ولكن دون أن تفعل كل شيء في منشئ وتعيين هذا إلى النموذج. ثم أنا فقط إضافة لذلك قسم في هذه الحالة هو الحاسوب العلم للكائن CS. ثم لدي نوع من نسخة الجسر للقيام بذلك. أنها لا تعمل في IE9. ولهذا السبب أردت لإظهار نوع من كيف - ما تقوم به هذه تحت غطاء محرك السيارة. ولكن يمكنك تعيينها في نفس الطريق حيث يساوي التأشيرات السياحية وظيفة بالطبع تطبيق هذه الحجج ثم يقول التأشيرات السياحية دوت النموذج يساوي كائن نقطة CreateCourse دوت النموذج. حتى انها بإنشاء كائن جديد الذي هو مجرد نموذج أولي للدورة ثم تعيين قسم هناك. حتى الآن دعونا نذهب فقط تعيين المصحح هنا وانقر على التشغيل. هناك نذهب. حتى CS164 يمكننا أن نرى سلسلة النموذج جاءتنا الخصائص التي كانت تعيين في منشئ. حتى قيم هذه التي تم تعيينها ثم في سلسلة النموذج لكائن CS كان تعيين قسم علوم الحاسوب. ثم من الأساسي سلسلة النموذج، ثم لدينا جميع الأساليب والخصائص التي هي فريدة من نوعها ل الكائن بالطبع. ومن ثم لدينا كائنات قاعدة. لذلك هذا النوع من سريع مثال على سلسلة النموذج. وكما ترون هنا وهناك نوعان من القيم لكل قسم. حتى لا يكون هناك قسم علوم الكمبيوتر ثم قسم غير مدرجة والتي قلت كقيمة افتراضية هنا. وبالتالي فإن سلسلة النموذج هو في الواقع مجرد منفردة القائمة رابط. وكما يحاول العثور على الممتلكات، أنها سوف تبدأ في قيمة مستوى أعلى. إذن ما هو معرف في وظيفة منشئ ثم انتقل نوع من أسفل سلسلة النموذج من هناك. ذلك لأنه وجدت، لذلك - إذا هنا، وأنا أقول قسم نقطة CS50، انها سوف يقول علوم الحاسوب. ولكن إذا قلت فار - [وقفة] ولكن إذا قلت العلوم الإنسانية يساوي مسار جديد ثم أقول العلوم الإنسانية نقطة الدائرة، سوف نرى قسم غير المدرجة لأنه ذهب إلى الأول - أنا يمكن أن ننظر إلى النموذج سلسلة هنا في الواقع. لذلك ذهبت لأول مرة إلى ملعب ورأى الاعتراض لا يوجد شيء على سلسلة النموذج في هذا المستوى لقسم أو للقيم الدائرة حتى بعد ذلك ينتقل إلى المستوى التالي، وبطبيعة الحال، ويتطلع إحالة هناك ويجد ذلك. لذلك مجرد نوع من مثل وتنخفض من أعلى إلى أسفل وهذا النوع من شيء فريد حول جافا سكريبت هي أنه يمكنك تغيير أي من هذه القيم في أي وقت من الأوقات. حتى في منشئ أو في طريقة الفرد على الكائن إذا كنت تريد تعيين هذا قسم لشيء جديد، أو إذا كنت تريد تعيين حتى أي من هذه الوظائف التي هي موجودة بالفعل إلى شيء جديد، أنا حر في أن يفعل ذلك. حتى الآن لدي CS50 نقطة addLecture، ويبدو من هذا القبيل. وإذا كنت ترغب في تعيين ل CS50 addLecture يساوي فقط إلى وظيفة فارغة. ثم الآن أستطيع أن أرى انها فقط تغيرت تماما التي لم تكن قادرة للقيام غات أخرى حيث كان لديك أكثر صرامة فئة استنادا الميراث وكل شيء نوع من اقامة. جافا سكريبت جدا جدا مرونة فيما يتعلق بذلك. حسنا، دعونا القفز مرة أخرى في الشرائح. حتى إذا كنت على سبيل المثال أود دائما وظيفة لديك خاصة تعيين هذه القيمة لذلك. يمكنك استدعاء وظيفة نقطة ربط وتعيين ما قيمة هذا ينبغي أن يكون. يمكنك التفكير في الأمر على النحو - "أنا أحاول أن أفكر في جيد سبيل المثال ولكن العالم الحقيقي "، إذا كنت ترغب في حماية التعليمات البرمجية ضد شخص يحتمل واصفا إياه بقيمة ذلك لن يكون هذا. مثل على سبيل المثال AJAX إعادة النداء مثل الزائدة أو الخطأ. تلك عادة لا يسمى مع جيدة الدلالي قيمة هذا. وكنت مثل، "حسنا، أنا دائما تريد أن تكون هذه هي القيمة الكائن بالطبع أن أعمل معه. أو طريقة العرض التي أنا العمل مع في قانون بلدي الذي يمثل هذا عقدة DOM، يمكنك تعيين - يمكنك ربط هذا السياق إلى وبعد ذلك عندما دعا في وقت لاحق من قبل لا يملك مسج وعليه قيمة جيدة من هذا أنها سوف عصا لماذا أنت يحدها معها. ثم هناك استدعاء دالة تم يمكنك تحديد السياق وتحديد أي متغير عدد من الحجج. ثم هناك وظيفة تطبيق التي يمكن أن تمر في سياق و ثم إما صفيف أو الحجج التي تعترض ذكرت كما ترون هناك. والحجج في أي الدالة التي تدعو، يمكنك كتابة فقط في كلمة "الحجج" وسيكون لديك كل الحجج. أنه يحتوي على خاصية "طول" وهو كيف كانت الحجج مايو مرت فعلا إلى أن أساليب منذ ذلك الحين في جافا سكريبت يمكنك فرز الدعوة مع أرقام متغير من الحجج. انها مفيدة لقوله إذا كان هذا حجة واحدة، ثم اتبع هذا المسار رمز. لو كان اثنين، وكنت قد تريد أن تتبع طريقة أخرى. لأنها تتيح لك أن يكون حقا واجهات برمجة التطبيقات الديناميكية لأساليب الاتصال. يمكنك التفكير في أنه مع مسج مثل عندما يكون لديك الدولار نقطة على أو مأزق. وذلك نوع من يفعل أشياء مختلفة حول ما إذا كنت وضعت واحدة حجة أو اثنين أو ثلاثة أو تشغيله مع وظيفة. أنه يستخدم الحجج ممتلكات والحجج طول في الكثير من الحالات أن يكون هذا السحر وظائف يحدث. الأشياء التي لا تستطيع أن تفعل مع الحجج واستخدامها فقط افتراضيا كما صفيف. لذلك يمكنك القول الحجج ثلاثة وتعيينها إلى شيء كما يمكن أن تستخدم تعيين مجموعة. يمكنك استخدام - الكثير الطرق تسطير لأي مجموعات أو للعمل مع صفائف، يمكنك تمرير في الحجج وانها سوف تدرك أنها تشكل الحجج الكائن ونوع من رعاية ذلك لك. ولكن إذا كنت ترغب في استخدام الحجج التي تم تمريرها من خلال وظيفة صفيف، يمكنك استخدام تسطير دوت اثنين صفيف. واحدة من عدد من الوظائف ذات المنفعة التي يتم بناءها في أن يؤكد.