>> ठीक है, तो आज, मैं बात कर रही हो जा रहा हूँ
जावास्क्रिप्ट के बारे में और कैसे यह है अन्य भाषाओं से अलग
आप हो सकता है कि PHP पसंद करते थे.
इतने पर पिछले व्याख्यान में सोमवार, हम थोड़ा बात की
इसी तरह की है के बारे में क्या है, जावास्क्रिप्ट के बीच परिचित
और PHP या पायथन या रूबी या सी या अन्य भाषाओं
आप पहले से ही कर रहे हैं कि साथ परिचित.
लेकिन जावास्क्रिप्ट यह वास्तव में वास्तव में एक अद्वितीय ले गया है
बनाता है कि ऑब्जेक्ट मॉडल पर यह एक तरह से पूरी तरह से अलग
अधिकांश भाषाओं से कि आप के साथ सौदा करने जा रहे हैं.
तो कार्य एक तरह हैं
underappreciated की जावास्क्रिप्ट में अवधारणा.
वे जिस तरह से और अधिक शक्तिशाली की तुलना में कर रहे हैं वे अन्य भाषाओं में हैं
वे कर सकते हैं क्योंकि में - एक कारण के लिए,
वे होना करने में सक्षम हो मूल्यों को स्थापित किया जाएगा.
तो यहीं हमारे पास वर एक्स समारोह के बराबर होती है
और यह एक प्रथम श्रेणी है पारित किया जा सकता है कि मूल्य
एक तर्क के रूप में चारों ओर.
तो आप के लिए नहीं है समारोह एक्स घोषित
और सिर्फ इतना है कि क्षेत्र में एक्स का उपयोग करें.
आप एक्स का मान पारित कर सकते हैं कहीं भी भर, तुम्हें पता है,
में एक तर्क के रूप में एक अन्य समारोह
आप निर्यात मॉड्यूल कर सकते हैं जहां डेविड नोड में उल्लेख किया है.
तो अगली बिंदु है
एक समारोह एक है कि जावास्क्रिप्ट में वस्तु.
तो आप वास्तव में सेट कर सकते हैं मान के रूप में गुण
एक समारोह पर और बस का इलाज यह यह एक वस्तु की तरह.
तो आप के साथ काम करते समय jQuery, तुम्हें पता है, कि डॉलर
और फिर आप पारित इसे में एक चयनकर्ता
और एक समारोह के रूप में यह आह्वान.
लेकिन तब आप भी डॉलर AJAX डॉट.
और वह नहीं की तरह करता है अगर आपको लगता है समझ कर
बस के रूप में एक समारोह के आप लागू कर सकते हैं कुछ
या कॉल करें.
लेकिन जावास्क्रिप्ट के लिए आप की अनुमति देता है कार्यों पर गुण सेट
के रूप में स्थिर गुण सिर्फ एक्स डॉट someProp साथ
मैं वहाँ के रूप में बताया.
हम कर रहे हैं जो अगले अंक एक छोटे से अधिक में जाने जा
गहराई में तथ्य यह है कि कार्यों इलाज किया जा सकता
जावास्क्रिप्ट में वर्गों के रूप में.
इसलिए अवधारणा है इस नए ऑपरेटर की
एक नया उदाहरण के बनाता है जो एक तरह के साथ समारोह
के वर्ग की तरह शरीर की तरह इसके साथ आता है जो
और हम जाने के लिए जा रहे हैं इस बारे में एक छोटे से अधिक,
यह प्रोटोटाइप कहा जाता है.
और बनाता है यह क्या है बहुत ही अनोखी जावास्क्रिप्ट तुलना
अन्य भाषाओं में जो वर्ग आधारित हैं,
जावास्क्रिप्ट आधारित एक प्रोटोटाइप है.
और फिर बस में वहाँ नीचे,
समारोह सिर्फ बुलाया जा सकता है हम करने के लिए इस्तेमाल कर रहे हैं स्पष्ट रूप से के रूप में.
इसलिए कि कोई नई बात नहीं है.
अनूठी है कि एक और बात है
सरणियों वास्तव में कर रहे हैं कि वस्तुओं.
उन्होंने कहा कि वे PHP में हैं पसंद नहीं कर रहे हैं
तुम सिर्फ बनाने जहां एक नई सरणी.
यह वास्तव में एक आशुलिपि है नई सरणी के लिए कह रही.
और सरणी वास्तव में है एक एक वस्तु के उपवर्ग.
तो यह है कि कुछ है अलग और मैं जाऊँगा
एक छोटे से एक अधिक में उस पर विस्तार.
और डिबगिंग क्षमताओं
जावास्क्रिप्ट के साथ वास्तव में कर रहे हैं बेजोड़ जहाँ तक मैंने देखा है.
यह एक स्क्रीनशॉट है क्रोम इंस्पेक्टर की
हम करने जा रहे हैं जो बाकी के लिए उपयोग किया जाना
प्रस्तुति आज की.
और तुम सिर्फ यह करने के लिए प्राप्त करने के लिए डेवलपर उपकरण फ़ाइल के लिए जाना
और खुले क्रोम इंस्पेक्टर या आप सही क्लिक कर सकते हैं
और शो तत्व मैं क्लिक करें यह HTML पृष्ठ पर लगता है कि
या मैं यह आदेश लगता है विकल्प जम्मू यह खुल जाता है.
लेकिन हम इस में जाओ और तुम हूँ वास्तव में breakpoints सेट कर सकते हैं
आप के माध्यम से चल रहे हैं जावास्क्रिप्ट कोड और क्रमबद्ध करें
किस स्थानीय मूल्यांकन चर, क्या मान रहे हैं
इस बात का है और यह बनाता है यह डिबग कोड के लिए रास्ता आसान.
और क्या न करें - यह नहीं है ब्राउज़र साइड कोड को विवश
लेकिन आप वास्तव में कर सकते हैं एक उदाहरण चलाने
इस क्रोम इंस्पेक्टर की आपकी सेवा साइड कोड के लिए
वास्तव में साफ है जो तुम क्योंकि लाइन से लाइन के माध्यम से कदम कर सकते हैं
एक अनुरोध में आता है के रूप में अपने सर्वर और क्या हो रहा है देखते हैं
और चर के साथ खेलते हैं यहाँ नीचे कंसोल में.
मैंने उल्लेख किया है तो के रूप में, जावास्क्रिप्ट एक प्रोटोटाइप आधारित भाषा है
जो एक सेट मतलब है कि वहाँ तरह हैं जो मूलभूत मूल्यों के
के हर समारोह के लिए छिपा हुआ
वस्तु डॉट में प्रोटोटाइप संपत्ति.
तो यह की तरह एक हैश की है सिर्फ अलग डिफ़ॉल्ट मान
कि आप एक आह्वान जब नए कीवर्ड के साथ कार्य,
उन द्वारा निर्धारित कर रहे हैं कार्यों के रूप में डिफ़ॉल्ट
जो उपलब्ध हैं उदाहरण पर.
तो यह है कि वास्तव में है - के लिए वास्तव में कुशल
यह एक कारगर तरीका का है बुद्धिमान वस्तुओं स्मृति बनाने
क्योंकि जावास्क्रिप्ट देखने का समय ही ट्रैक रखने के लिए है
वस्तु का प्रोटोटाइप की.
यह एक तरह से है कि करने के लिए अंक
आप एक नया cretae जब एक वर्ग के उदाहरण.
और तुम भी नकल कर सकते हैं के रूप में विरासत ज्ञात है
वर्ग आधारित भाषाओं में आप प्रकार का है, जहां
की तरह इस फैली हुई है, कि आप नकल कर सकते हैं कि फैली
कि जावास्क्रिप्ट में कहा जाता है के माध्यम से
प्रोटोटाइप श्रृंखला.
और हम उदाहरण देखेंगे उस के बारे में.
तो अपने - अगर jQuery Plugins वास्तव में वे jQuery की सिफारिश
डॉलर डॉट उपयोग करने के लिए लेखकों एफ एन कार्यक्षमता जोड़ने के लिए
jQuery पुस्तकालय के लिए.
और हम वास्तव में करने के लिए जा रहे हैं करने के लिए कूद - तो, ​​इस पृष्ठ पर,
हम डॉलर है - मैं jQuery शामिल थे.
और तुम डॉलर करते हैं कंसोल में डॉट
मैं लाने उल्लेख किया है जो आप ऊपर कमांड पारी जम्मू के माध्यम से
या सिर्फ देखने के लिए जा रहा, डेवलपर, डेवलपर उपकरण
और सूत्रों का कहना है टैब के लिए जा रहा.
[अश्रव्य टिप्पणी]
ओह यकीन है. तो जब मैंने शुरू किया एक चर में टाइप करने के लिए,
यह मेरे लिए ऑटो पूरा क्या वहाँ उपलब्ध है.
इसलिए मैं डॉलर में टाइप और मैं कर सकता हूँ मैं क्रोम कुछ है लगता देखना
निर्मित में डॉलर, डॉलर और डॉलर एक्स.
इसलिए अभी मैं बस चाहता हूँ डॉलर और मैं एक डॉट में डाल दिया.
और फिर यह मुझे पता चलता है सभी गुण
जो उपलब्ध हैं jQuery वस्तु पर.
लेकिन मैं डॉलर करते हैं डॉट प्रोटोटाइप,
मैं अब सभी तरीकों को देखने मैं का उपयोग करने के लिए इस्तेमाल कर रहा हूँ कि
मैं डॉलर, चयनकर्ता है जब और फिर मैं उस के साथ बंद श्रृंखला
तुम्हें पता है, वर्ग जोड़ सकते हैं या संलग्न या धब्बा या तरह के किसी भी.
उन सब वास्तव में कर रहे हैं प्रोटोटाइप पर
जो डाकू jQuery के तहत खुद की एक नई मिसाल पैदा करता है
और यह एक तरह से सभी छुपाती तुम से उन विवरण.
तो मैं था कि बिंदु यहाँ पर वापस बनाने
समारोह के साथ, वे वास्तव में आप से प्रोटोटाइप छिपाने
और अभी यह उर्फ डॉलर के लिए एफ एन डॉट.
तो ज्यादातर लोगों को वास्तव में एहसास नहीं है
एक प्रोटोटाइप है कि वहाँ हुड that's तहत -
आप में नल और कर सकते हैं कि अतिरिक्त कार्यक्षमता जोड़ने
प्रत्येक jQuery उदाहरण के लिए यदि आप चाहते हैं.
तो 'नई' ऑपरेटर है वास्तव में एक तरह से मुश्किल
पहली बार में समझने के लिए.
आप एक समारोह फोन जब 'नई' के साथ,
यह एक पूरी तरह से अलग है समारोह बुला के रास्ते
आपको सिर्फ कहा जाता है जैसे यह स्पष्ट रूप से.
तो 'नई' ऑपरेटर बनाता है एक नई मिसाल कहा जाता है
एक वस्तु या एक नया की , आप सोच सकते हैं के उदाहरण
एक वर्ग के रूप में वस्तु की.
और यह, मूल्य होता है जब इस में से कौन परिचित हो सकता है
, jQuery से साथ वे एक तरह से यह सेट
सुविधाजनक है जो कुछ भी करने के लिए समय पर.
वे आम तौर पर करने के लिए सेट आप कर रहे हैं कि वर्तमान डोम नोड
आप की तरह के माध्यम से जा रहे हैं पर प्रत्येक या ऐसा कुछ.
वे - यह मान माना जाता है उदाहरण के मूल्य होना
आप "नया" के साथ बनाए गए, जो सब कुछ शामिल है
प्रोटोटाइप श्रृंखला और सब पर आपको पता था कि तरीकों का
प्रोटोटाइप गुण के रूप में.
तो इस पर निर्भर करता है कि कैसे एक समारोह में कहा जाता है,
इस का मूल्य क्या है.
और यह वास्तव में भ्रमित करने वाला है आप जावास्क्रिप्ट के लिए नए हैं.
लेकिन कहा जाता है कि हर समारोह एक है - इस मूल्य में है.
आप नहीं बनाया है, तो भी अगर कुछ की एक नई मिसाल,
इस मान लिया जाता है कि वैश्विक हो.
या फिर आप एक समारोह कॉल कर सकते हैं कॉल पद्धति का उपयोग
विधि लागू जहां जावास्क्रिप्ट में.
आप कार्य कर सकते हैं और इस क्या किया जाना चाहिए निर्दिष्ट.
तो अगर आप इसे गतिशील बना सकते हैं वास्तव में शक्तिशाली है जो
लेकिन यह भी तुम क्या करने की अनुमति देता है भ्रामक हो सकता है जो बातें
और करने के लिए भ्रमित अन्य डेवलपर्स
वे इस तथ्य के लिए उपयोग नहीं कर रहे हैं.
और jQuery, मैं तर्क होता है यह और भी अधिक भ्रमित करता है
यह सुविधाजनक बनाने के द्वारा और इसे स्थापित
वर्तमान डोम नोड के लिए.
लेकिन साधारण नियम याद करने के लिए इस का मूल्य क्या है
आप देख रहे हैं
एक कार्यात्मक कॉल है पर डॉट का क्या बचा है.
तो तुम एक वस्तु है अगर
और यह कुछ है डॉट कुछ समारोह है
आप तो कह रहे हैं कि पहली मूल्य क्या मूल्य है
इस है.
तो यहाँ एक कोड उदाहरण है
मैं निर्माण कर रहा हूँ जहाँ शाब्दिक एक नई वस्तु
जो सिर्फ वस्तु है घुंघराले ब्रेसिज़ के साथ बनाया
और मैं बॉब के लिए नाम स्थापित कर रहा हूँ
और फिर मैं एक sayName है यहां जो विधि -
इसलिए इस sayName अंदर मैं एक्स sayName डॉट, तो क्या होगा
इस का मूल्य बराबर है एक्स के लिए क्योंकि बाएँ
डॉट की एक्स है. तो अगर मैं, डॉट sayName एक्स इसे कहते हैं
यह नमस्कार बॉब कहेंगे.
और फिर एक और उदाहरण
मैं वास्तव में निर्दिष्ट कर रहा हूँ जहाँ एक्स डॉट sayName, समारोह
चर y के लिए, जो जैसा कि मैंने उल्लेख
जावास्क्रिप्ट आप में कार्य आवंटित कर सकते हैं
चर जब आप चाहते हैं, के लिए यह तरीका है कि वास्तव में लचीला है
लेकिन अब मैं, वाई जब फोन यह एक्स के संदर्भ खो दिया है.
तो यह अब वैश्विक या है आप सख्त मोड में हो,
मैं यह शून्य है विश्वास या अपरिभाषित.
लेकिन - तो वाई आप क्या कर रहे हैं नहीं है आप देख रहे हैं यहां की उम्मीद
एक्स और आप जा रहे हैं sayName कॉल करने के लिए,
आप इस नाम की उम्मीद कर रहे हैं बॉब माना जाता है.
लेकिन आप इसे खींच अगर वस्तु और यह कहा जाता है
वैसे, यह अब वैश्विक है.
और कहा कि मैं उल्लेख किया गया है क्या आप डॉलर मिलते हैं, जब यह डॉट
आप अक्सर के बारे में सोच नहीं है क्या वास्तव में हो रहा है.
लेकिन jQuery की तरह है उनके खुद के डोमेन विशिष्ट भाषा
इस के साथ निपटने के लिए यह आप इस्तेमाल कर रहे हैं क्या नहीं है
जावास्क्रिप्ट में करने के लिए.
और मुझे इस बात यह वास्तव में महत्वपूर्ण है क्योंकि
अच्छी तरह से संरचित लिखने के लिए वस्तु उन्मुख कोड
जावास्क्रिप्ट सच है की में एक अच्छी समझ है और समझ
यह कैसे काम करता है और कैसे ऑब्जेक्ट मॉडल काम करता है
और कैसे नए ऑपरेटर काम करता है.
अन्यथा, आप समाप्त होगा jQuery स्पेगेटी के साथ
सब कुछ तरह है जहां की सभी जगह
और केवल डोम के साथ काम कर.
आप वास्तव में कर सकते हैं जावास्क्रिप्ट लिखना
एक अधिक संरचित फैशन में, यह यह एक बहुत आसान बना देता है
सॉर्ट करने के लिए, के साथ काम करने के लिए की चिंताओं को अलग
से निपटने की डोम को अद्यतन करने और निपटने
वास्तविक तर्क और कोड के साथ.
तो चलो एक पर एक नज़र रखना कि चारों ओर कुछ उदाहरण हैं.
इसलिए मैं यहाँ कुछ उदाहरण है.
तो यह सिर्फ एक सरल उदाहरण है एक जावास्क्रिप्ट वस्तु का उपयोग करने का
और कुछ कार्यों को जोड़ने यह और फिर प्रकार बनाने के लिए
की एक लघु आवेदन की तरह.
तो यह वास्तव में बहुत आसान है.
यह होता है कि केवल एक चीज है शुरू में यह अपने नाम के संकेत देता है.
तो मैं टिम कहते हैं और फिर आप करेंगे बॉब के लिए अपना नाम बदल सकते हैं.
और कहा कि यह सब है आवेदन करता है.
लेकिन क्या मैं बात करने के लिए करना चाहते हैं बाहर यह कैसे करता है.
इसलिए मैं इस नाम जनरेटर एक शुरुआत विधि है जो वस्तु
उपयोगकर्ता पूछता है जो उनके नाम के लिए
सिर्फ इस askForName फोन करके
जो नीचे यहाँ यह शीघ्र करता है
नाम नहीं सौंपा गया था अगर तो यह इसके लिए फिर से पूछता है
इस askForName फोन करके.
और फिर यह नाम हो जाता है एक बार, यह इस अद्यतन नाम बताते हैं.
तो यह तो सेट H1 टैग में उपयोगकर्ता का नाम.
और नाम नहीं है अगर सेट, यह एक त्रुटि फेंकता है.
[अश्रव्य टिप्पणी]
ओह यकीन है. तो यह सेट H1 टैग में उपयोगकर्ता का नाम
setDisplayName फोन करके एचटीएमएल जो सेट
जेएस नाम कंटेनर और में मैं अपने HTML के सभी prefixing हूँ
जेएस चयनकर्ताओं को सिर्फ इसलिए साथ इसे पाने के लिए एक अच्छी आदत है
बस बनाने के लिए में यह इतना भ्रमित नहीं
आप उपयोग कर रहे हैं जब आईडी या वर्गों की तरह चयनकर्ताओं
शैली दोनों के लिए और तर्क के लिए
आपकी जावास्क्रिप्ट में सामने अंत अनुप्रयोगों.
क्योंकि आप अलग है अगर काम कर रहे लोगों के समूहों
कोड के आधार पर और आप वहाँ एक चयनकर्ता है
डिजाइनर का फैसला करता है कि बदलने के लिए it's क्योंकि -
बहुत अच्छी लग रही है, इसलिए वे नहीं चाहता है एक नए वर्ग में डाल दिया है और लेने के लिए
बाहर तुम्हारा और आप भरोसा कर रहे हैं जावास्क्रिप्ट प्रयोजनों के लिए उस पर,
फिर अपने कोड टूट जाता है.
यह उपसर्ग और सॉर्ट करने के लिए अच्छा है
जैसे नाम स्थान के लगभग जावास्क्रिप्ट संबंधी कक्षाएं
या साथ विशेषताओं जे एस का एक उपसर्ग.
इसलिए यह बहुत है सरल और आप देख सकते हैं
मैं कर रहा हूँ कि इन सभी मामलों में बुला अंत में वापस करो.
तो यह एक अच्छा है में शामिल होने की आदत,
आप इसे एक देने के लिए वैध वापसी मूल्य.
AskForName में मैं नहीं हूँ कि समझ में आता है क्योंकि
आप वापस नाम मिलेगा.
लेकिन यह है कि अनुमति देता है क्या आप तो ऐसा करने के लिए
आप इस अद्यतन लौटने अगर यह मूल्य लौट रहा है, नाम है
setDisplayName का जो है इस का मूल्य लौटने.
और कहा कि आप सॉर्ट करने के लिए अनुमति देता है आप इस्तेमाल कर रहे हैं के रूप में श्रृंखला की
लौटने से jQuery में करने के लिए यह हर बार की मूल्य.
यह करने के लिए संदर्भित करता है वर्तमान वस्तुओं
तो अगर आप इस डॉट कह सकते हैं askForName डॉट setDisplayName
और यह रखना होगा इस का मूल्य और आप की अनुमति
वहाँ एक अच्छा श्रृंखला के लिए है.
और फिर में - तो में यह दूसरा उदाहरण.
[रोकें]
ठीक है.
ठीक है. तो चलो आगे चलते हैं और सांत्वना खोल
और मेरे सूत्रों टैब पर जाएं.
हम वास्तव में इस बाहर पॉप हूँ.
तो क्रोम डेवलपर में मैंने उल्लेख किया है कि उपकरण,
इस टुकड़ा है सही और एक पर -
आप इस बंद हस्ताक्षर देख सकते हैं डिफ़ॉल्ट रूप से, हालांकि, यह काला है.
लेकिन जब इस पर आप माउस, यह अपवाद पर विराम नहीं है "कहते हैं.
ठहराव पर क्लिक करें सभी अपवादों. "
और जब आप इसे क्लिक फिर, यह नीले रंग बदल जाता है.
और अब किसी भी समय है कि फेंका एक त्रुटि है
अपने जावास्क्रिप्ट कोड में, यह हूँ बिंदु पर रोक और आप की अनुमति
क्या हो रहा है मूल्यांकन करने के लिए.
तो - और वह वास्तव में एक उपयोगी है अवधारणा बाहर बात करने के बारे में है.
और फिर यदि आप क्लिक करें फिर, यह बैंगनी बदल जाता है
और यह सामान्य रूप से है क्या मैं इसे अंदर रखना
यह केवल कोड टूट जाता है वहाँ एक अपवाद है जब
कि पकड़ा नहीं गया है.
ऐसा करने के लिए jQuery में बार बार उदाहरण के लिए, वे कैच कोशिश करते हैं
एक ब्राउज़र या नहीं, परीक्षण करने के लिए क्षमता किसी प्रकार का है
और वहाँ से जारी है.
यह केवल तब होता है जब वहाँ एक त्रुटि है
कि नहीं किया गया है एक कोशिश पकड़ में फंस गए.
तो चलो कोशिश करते हैं और प्रस्तुत रिक्त है कि एक नाम.
तो मैं देख सकता हूँ कि कोड अब बंद कर दिया गया है
updateName विधि पर और मैं कर सकता नामों पर माउस
और इसे खाली करने के लिए खाली है देखते हैं.
वहाँ इसे खाली करने के लिए बराबर है.
तो अगर नहीं एक नई फेंक का नाम त्रुटि और अब मैं वापस कदम कर सकते हैं
समारोह के माध्यम से स्तंभ और ठीक है ", कहते हैं,
जहां इस से आते हैं, "और था ग्राहक का मूल्य क्या है.
तो यह askForName विधि है
setDisplayName शुरू और updateName.
और यह सिर्फ एक सच में उपयोगी है जिस तरह से आप देख सकते हैं सभी
उपलब्ध हैं जो चर उस दायरे में भी
बंद होने चर के रूप में, बंद हो गया है कि इतना कुछ
पर इस समारोह से.
और इसलिए मैं देख सकते हैं कि - ग्राहक का मूल्य क्या है
और क्या इस का मूल्य है.
हम कर रहे हैं तो यह 'कारण jQuery में बराबर है
वर्तमान डोम तत्व करने के लिए.
लेकिन यह वास्तव में उपयोगी है कोड डिबगिंग के लिए
इस तरह की त्रुटियों पर तोड़ने के लिए.
की एक और विशेषता क्रोम इंस्पेक्टर है
कि आप कर सकते हैं किसी भी बिंदु पर अलग लाइनों पर क्लिक करें
पंक्ति में और यह हूँ स्थानों पर विराम
आप breakpoints सेट है जहां वे के रूप में संदर्भित कर रहे हैं.
मैं क्लिक करें तो अगर, लाइन नीला पड़ जाता है.
तो मुझे आगे बढ़ें यहाँ निष्पादन, ठीक है, कि तोड़ दिया.
और अब का नाम निर्धारित कर सकते हैं ऐलिस के लिए और सबमिट करें मारा.
तो अब मैं भी देख सकते हैं यह बिंदु पर मिल से पहले
सब कुछ अद्यतन करने की, यह अब है तो मैं देख सकता हूँ यहीं बंद कर दिया
मेरे इस नाम एलिस है कि और फिर मैं जारी रख सकते हैं -
मुझे पृष्ठ को फिर से लोड करते हैं.
ठीक है, तो अब यह है कि , फिर से शुरू पर शुरू
यह इस पर रोक दिया गया है रेखा और मैं देख सकता हूँ
उस नाम वर्तमान में है अपरिभाषित.
askForName यह समारोह जो है है, इसलिए कि अक्सर भी उपयोगी है
आप कर रहे हैं कि कार्य किया है अगर अलग अलग फ़ाइलों से आ रही
में या अलग अलग स्थानों पर यह वह जगह है जहाँ कोड, आप देख सकते हैं,
और फिर उस पर कूद, यह इसे उजागर करेंगे.
आदत में पाने के लिए तो अच्छा डीबगिंग उपकरण के उपयोग की
अभी नहीं कर रहे हैं डॉट प्रवेश सांत्वना.
ठीक है, तो चलो ले चलो एक एक दूसरा उदाहरण देखें
जिनमें से अधिक उपयोग करता है मैं करने के लिए alluded था के रूप में प्रोटोटाइप.
तो इस उदाहरण में,
हम एक नया बना रहे हैं सीएस बुलाया समारोह
और यह बड़ा है इसलिए सम्मेलन मानक
जावास्क्रिप्ट में है अगर एक समारोह में इस्तेमाल किया जा करने के लिए माना जाता है
एक निर्माता के रूप में, के रूप में विरोध
सिर्फ एक सामान्य करने के लिए समारोह, आप इसे भुनाने.
इसलिए मैं राजधानी सीएस और यह है एक चर courseId लेता है
और courseTitle जो मैं इस courseId करने के लिए सेट,
इस courseTitle निर्माता में.
और फिर मैं भी छात्रों सेट और खाली सरणियों के रूप में व्याख्यान दिए.
इसलिए कि आप कारण -
ठीक है, इसलिए प्रोटोटाइप गुण तो परिभाषित किया गया
यहाँ नीचे साथ - तो टेम्पलेट बस एक साधारण अंडरस्कोर है
टेम्पलेट, एक अंडरस्कोर टेम्पलेट आप कर सकते हैं कि एक तरह से किया जा रहा है -
टेम्पलेट्स के समान दाऊद का उल्लेख किया था कि
सर्वर पर, आप कर सकते हैं बस एक स्क्रिप्ट टैग लिखना
एक जावास्क्रिप्ट नहीं है जो स्क्रिप्ट लेकिन एक पाठ HTML
और मैं क्या कर रहा हूँ jQuery के साथ -
यह इन रखना नहीं है खुला, हाँ, हम वहाँ जाते हैं.
JQuery के साथ, यह हो रही है उस टेम्पलेट के एचटीएमएल मूल्य
और फिर के माध्यम से यह चल रहा है उपयोगिता पुस्तकालयों को रेखांकित
टेम्पलेट इंजन.
तो प्रलेखन उस के लिए नीचे यहाँ है
उपयोगिता टेम्पलेट के तहत
लेकिन बुनियादी तौर पर आप पढ़ सकते हैं इसके बारे में थोड़ा और अधिक.
लेकिन यह इस स्ट्रिंग का मूल्यांकन करता है और एक समारोह में बदल जाता है
जो हम तो डेटा पारित कर सकते हैं में और यह गतिशील कहते हैं.
मुझे लगता है कि अगले दो तरीकों addStudent और addLecture हैं.
ये तो बस के लिए उन्हें जोड़ने मैं निर्धारित किया है कि आंतरिक सरणियों
निर्माता और फिर विधि प्रस्तुत करना.
तो, चलो नया बना सकते हैं सीएस के कहने 164 बुलाया
इस कोर्स है जो संख्या 164 और शीर्षक.
और फिर CS50 जो है CS1 के लिए CS50 और परिचय
और फिर कुछ जोड़ छात्रों व्याख्यान
और फिर CS50 प्रस्तुत करना कहते हैं.
और मैं कोड को चलाने, यदि ऐसा है तो मैं Eval के साथ कर रहा हूँ कि.
आप वास्तव में उपयोग करना चाहते हैं कभी नहीं EVAL, लेकिन मैं बस की तरह हूँ
का ले रही सभी कि यहाँ है जावास्क्रिप्ट
और मक्खी पर इसे क्रियान्वित.
यह इस मामले में renders इन नए उदाहरण टेम्पलेट
है जो सीएस वर्ग की गुण, तो हम चले गए
addLecture के माध्यम से और किया और प्रत्येक को addStudent.
और जैसा कि मैंने उल्लेख मैं यह वापस आ रहा हूँ, क्योंकि
मैं वास्तव में इन श्रृंखला कर सकते हैं addLecture और addStudent कॉल
और यह बस के रूप में अच्छी तरह से काम करेंगे.
जावास्क्रिप्ट में अन्य सुविधा कि और भी अधिक उपयोगी है
सर्वर साइड पर जहां आप वास्तव में किसी भी समय
अपने आवेदन हो जाता है बड़ा आप कर रहे हैं पता नहीं कहाँ
और यह निर्धारित करने के लिए कठिन है इन व्यक्तिगत ब्रेकप्वाइंट
मैं में उल्लेख किया है कि क्रोम इंस्पेक्टर है
डिबगर कीवर्ड का उपयोग करने के लिए.
तो यह डी ई बी यू जी जी ई आर बस है.
और तुम एक डिबगर डाल जब अपने कोड में कीवर्ड
और आप हैं - वहाँ हम दो जी जाने.
आप डीबगर डाला अपने कोड में कीवर्ड
और आप एक डिबगर चला रहे हैं
ऐसे क्रोम के रूप में यहाँ इंस्पेक्टर
या सर्वर साइड क्रोम इंस्पेक्टर, यह जावास्क्रिप्ट बताता है
उस लाइन पर निष्पादन को रोकने के लिए कोड की और फिर यह आपको अनुमति देता है
बाकी के माध्यम से कदम कोड के निष्पादन की.
मैं रन कोड पर क्लिक करें तो अगर यहां, यह अब रोक रहा है
इस डिबगर लाइन पर और मैं कर सकता हूँ ठीक है देखते हैं, यहाँ CS50 का मूल्य है
और यह एक मिला कोर्स है शीर्षक, पाठ्यक्रम आईडी,
यह कोई व्याख्यान मिल गया है, कोई छात्र.
और फिर मैं के माध्यम से कदम कर सकते हैं पूरे addLecture,
मैं यह कोशिश कर रहा है देख सकते हैं इन व्याख्यानों पर,
माउस उस पर, "नमस्ते विश्व".
मैं वास्तव में यह कर सकते हैं सांत्वना तो यह सेट है यह कर
वर्तमान वस्तु को तुम अंदर हो कि
यह व्याख्यान "नमस्ते विश्व" है.
और कदम रखना जितना मैं चाहता हूँ के रूप में के माध्यम से.
मैं कदम नहीं करना चाहते हैं
एक समारोह कॉल 'कारण में मुझे लगता है कि क्या हो रहा है
addLecture में जाने से ऐसा करने के लिए, इस बटन को सही यहाँ है
"अगले कदम है जो कहते हैं समारोह कॉल, "और इसलिए मैं जा सकते हैं
बात करने के लिए मैं शायद हूँ गया कुछ के बारे में सोच रहा.
जैसे उदाहरण के लिए 164 प्रस्तुत करना.
तो इस बिंदु पर, यह है गाया जा रहा है.
मैं इस टेम्पलेट देख सकते हैं संकलित टेम्पलेट है.
मैं इस बिंदु मैं पर देख सकते हैं दो छात्रों होनी चाहिए
और दो व्याख्यान दिए.
और फिर प्रोटोटाइप वहाँ मैं बात कर रहा था कि श्रृंखला.
आता है तो एक डिफ़ॉल्ट सिर्फ एक वस्तु के साथ
सामान्य में जावास्क्रिप्ट, में
यह दो तार के साथ आता है निर्माता के मूल्य.
और फिर लोगों कि मैं अपने आप पर जोड़ दिया है
addLecture, addStudent साथ और तब गुण
इस के लिए अद्वितीय हैं कि वर्ग के उदाहरण
यह लागू किया गया था के रूप में नए कीवर्ड के साथ.
तो चलो करते हैं सिर्फ एक इस पर और अधिक उदाहरण
और फिर हम कुछ करने के लिए कदम होगा अधिक दिलचस्प बातें
सर्वर साइड पर.
तो चलो आगे बढ़ो और खुला यह पिछले उदाहरण जो है -
की जहां कोड है, देखते हैं?
इस चला गया जहां मैं नहीं जानता.
ठीक है, ठीक है, हम बस छोड़ सकता है इस कोड पर तो वास्तव में -
ओह रुको, मैं मैं याद लगता है कोड के लिए शैली पत्रक.
ठीक है, तो चलो बड़ा यह एक छोटे से.
इस उदाहरण में, मैं दिखा रहा हूँ सेटिंग पर एक छोटे से अधिक
प्रोटोटाइप श्रृंखला,
इसलिए विरासत की स्थापना जावास्क्रिप्ट के साथ.
तो इस मामले में, हम हैं जा रहा है जो एक सूची
संभवतः बनाए रखने के लिए कई पाठ्यक्रमों.
और इसलिए एक सूची है एक addCourse तरीकों.
तो यह जाँच करता है कि क्या कोर्स उस में पारित कर दिया है एक उदाहरण है
बेशक के रूप में लागू नए कीवर्ड के साथ.
तो अगर आप कोशिश करते हैं और भेज
कुछ अलग करने में, यह आप पर चिल्लाना होगा.
रेंडर विधि जो होगा कोर्स के लिये प्रस्तुत करना
नीचे अपनी टेम्पलेट संकलन से.
और हम पाठ्यक्रम जो पहुँच
इस मामले में के लिए आधार वर्ग व्यक्तिगत विभाग पाठ्यक्रमों.
और बदले प्रत्येक सेटिंग के
बेशक डॉट की प्रोटोटाइप डॉट विधि
या विस्तार का उपयोग कर संपत्ति अंडरस्कोर पुस्तकालय में सहायक
विस्तार कॉल की तरह करने के सभी के साथ इस प्रोटोटाइप
इन गुणों के कारण, जो है उपयोगी, पढ़ने के लिए एक आसान सा.
और फिर नीचे यहाँ क्या कर सेटिंग के रूप में जाना जाता है
प्रोटोटाइप श्रृंखला.
तो यह वास्तव में एक छोटे से है पहली बार में लोगों को मुश्किल
और यहां तक ​​कि अभी भी यह किया होने थोड़ी देर के लिए, यह एक तरह से मुश्किल है
अपने सिर के चारों ओर लपेट लिए.
लेकिन आपको डराने कि ऐसा नहीं है.
तो मैं एक नए स्थापित कर रहा हूँ -
एक पूरी तरह से नए वर्ग , यहाँ सीएस वस्तु.
और निर्माता में,
मैं बेशक यह कह रहा हूँ इस तर्क लागू होते हैं.
इसलिए तर्क एक खास है मूल्य मैं आप यह कह सकते
जावास्क्रिप्ट में, सब किया है जो कीवर्ड
सब कुछ है कि की साथ पारित तर्क है
उस समारोह उपलब्ध हैं तर्क फोन के साथ,
तर्क कीवर्ड साथ.
मैं बुला रहा हूँ तो के रूप में कोर्स के साथ लागू डॉट,
इस वर्तमान संदर्भ है जिसके साथ सीएस बुलाया जा रहा है.
तो मैं नए के साथ यह आह्वान जब यह एक है - यह सीएस का एक मूल्य है.
और मैं इस फोन कह रहा हूँ यहां कोर्स विधि.
ओह क्षमा करें - यह कॉल यहीं कोर्स विधि
लेकिन इस का मूल्य निर्धारित जो भी मूल्य होना
इस यहीं है.
तो लागू कीवर्ड अनुमति देता है आप की तरह राज्य को बदलने के लिए
इस जिनमें से कैसे jQuery है स्विच की तरह करने की अनुमति दी है
के रूप में आप इस पर बाहर आप के माध्यम से जा रहे हैं
और एक डोम तत्वों बनाने बजाय jQuery वस्तु की.
तो अब मैं स्थापित करने के लिए जा रहा हूँ एक अस्थायी समारोह
आकर्षित करेगा जो पाठ्यक्रम का प्रोटोटाइप.
और की तरह यह सेट इसके प्रोटोटाइप के लिए
और फिर प्रोटोटाइप सेट सीएस समारोह वस्तु पर
इस बात का एक नया उदाहरण के लिए.
तो बुनियादी तौर पर मैं हूँ बजाय कह -
मैं यहाँ नीचे सीएस डॉट किया था प्रोटोटाइप नए पाठ्यक्रम के बराबर होती है.
तो यह होगा सब कुछ बुला
इस निर्माता समारोह में,
जो मैं नहीं होता जरूरी चाहता था.
तो मैं क्या कर रहा हूँ सब है एक तरह से लगभग बनाने
एक सरोगेट समारोह की तरह जो पाठ्यक्रम प्रोटोटाइप होगा
इस पर और तरह की प्रोटोटाइप नकल -
बेशक, लेकिन कर के बिना निर्माता में सब कुछ
और प्रोटोटाइप के लिए कि निर्धारित किया है.
और फिर मैं हूँ बस इसलिए विभाग को जोड़ने
इस मामले में कंप्यूटर है सीएस वस्तु के लिए विज्ञान.
और फिर मैं एक का एक प्रकार है कर रही है कि पुल संस्करण.
यह IE9 में काम नहीं करता है.
मैं चाहता था तो इसलिए कैसे की तरह दिखाने के लिए -
इस क्या कर रहा है हुड के नीचे.
लेकिन आप यह निर्धारित कर सकते हैं उसी तरह से ऊपर
अर्थव्यवस्था समारोह के बराबर होती है, जहां बेशक ये तर्क लागू
और तो अर्थव्यवस्था डॉट प्रोटोटाइप कहना वस्तु डॉट CreateCourse के बराबर होती है
डॉट प्रोटोटाइप.
तो यह एक नया ऑब्जेक्ट बनाता है जो सिर्फ प्रोटोटाइप है
पाठ्यक्रम के लिए और उसके बाद वहाँ विभाग की स्थापना की.
तो अब एक सेट के बस जाने दो यहाँ डिबगर और रन पर क्लिक करें.
हम वहाँ जाते हैं.
तो CS164 हम देख सकते हैं हमें मिल गया है प्रोटोटाइप श्रृंखला
गुण जो थे निर्माता में निर्धारित किया है.
सेट किया गया है कि इनमें से तो मानों और फिर प्रोटोटाइप श्रृंखला पर
यह था सीएस वस्तु के लिए विभाग कम्प्यूटर साइंस की स्थापना की.
और फिर अंतर्निहित पर प्रोटोटाइप श्रृंखला,
हम तो है सब तरीकों और गुण
के लिए अद्वितीय हैं कि बेशक वस्तु.
और फिर हमारे पास है बेस वस्तुओं.
तो एक त्वरित का है कि तरह प्रोटोटाइप श्रृंखला का उदाहरण.
और तुम वहाँ, यहाँ देख सकते हैं विभाग के अनुसार दो मान रहे हैं.
इसलिए विभाग है कंप्यूटर विज्ञान की
और फिर विभाग मैंने कहा जो सूचीबद्ध नहीं
यहां डिफ़ॉल्ट मान के रूप में.
इसलिए प्रोटोटाइप श्रृंखला वास्तव में सिर्फ एक अकेले है
लिंक सूची.
और यह करने की कोशिश करता है एक संपत्ति खोजने,
इसे शुरू करेंगे शीर्ष स्तर मूल्य.
तो में क्या परिभाषित है निर्माता समारोह
और फिर एक तरह से नीचे जाना वहाँ से प्रोटोटाइप श्रृंखला.
यह पाया तो क्योंकि, तो -
यहीं हैं, तो मैं कहना CS50 डॉट विभाग,
यह कंप्यूटर विज्ञान कहता हूँ.
लेकिन मैं वर कहते हैं -
[रोकें]
लेकिन मैं मानवता का कहना है कि अगर नए पाठ्यक्रम के बराबर होती है
और उसके बाद मैं मानवता का कहना है डॉट विभाग,
मैं विभाग सूचीबद्ध नहीं देखेंगे यह चला गया क्योंकि पहले -
मैं प्रोटोटाइप पर देख सकते हैं श्रृंखला यहाँ वास्तव में.
तो यह कोर्स करने के लिए पहले चला गया वस्तु और वहाँ कुछ भी नहीं देखा था
प्रोटोटाइप श्रृंखला पर पर विभाग के लिए इस स्तर
या विभाग मूल्यों के लिए इतना तो यह अगले स्तर के लिए कूदता
पाठ्यक्रम और लग रहा है वहाँ अग्रेषित और यह पाता है.
बस की तरह की तरह यह तो ऊपर से नीचे नीचे चला जाता है
और उस तरह का है अनूठा है कि कुछ
के बारे में जावास्क्रिप्ट है आप किसी भी बदल सकते हैं
इन मूल्यों में की किसी भी समय.
तो निर्माता या एक में वस्तु पर व्यक्तिगत विधि
मैं इस सेट करना चाहते हैं कुछ नया करने के लिए विभाग
या मैं भी सेट करना चाहते हैं इन कार्यों के किसी भी
पहले से ही मौजूद हैं कि
कुछ नया करने के लिए, मैं ऐसा करने के लिए स्वतंत्र हूँ.
इसलिए अभी मैं CS50 डॉट है addLecture, ऐसा लग रहा है.
और मैं इसे स्थापित करने के लिए चाहते हैं CS50 addLecture बस के बराबर होती है
रिक्त समारोह के लिए.
तो अब मैं इसे देख सकते हैं अभी पूरी तरह से बदल गया है
तुम नहीं कर पा रहे हैं जो अन्य भाषाओं के लिए
आप एक सख्त है जहां वर्ग आधारित विरासत
और सब कुछ है तरह की स्थापना की.
जावास्क्रिप्ट बहुत, बहुत है उस के संबंध के साथ लचीला.
ठीक है, चलो वापस कूद स्लाइड्स में.
तो उदाहरण के लिए यदि आप हमेशा एक समारोह की तरह होगा
एक विशेष संबंध के लिए इस मूल्य इसके लिए निर्धारित किया है.
आप समारोह डॉट बाँध कॉल कर सकते हैं
और क्या मूल्य निर्धारित इस होना चाहिए.
आप के रूप में सोच सकते हैं -
"मैं एक के बारे में सोच की कोशिश कर रहा हूँ "वास्तविक दुनिया उदाहरण अच्छा है, लेकिन,
आप अपने कोड की रक्षा करना चाहते हैं
संभवतः किसी के खिलाफ एक मूल्य के साथ यह फोन
कि यह नहीं होगा.
जैसा उदाहरण के लिए AJAX अतिरिक्त या त्रुटि की तरह कॉलबैक.
वे आम तौर पर नहीं कहा जाता है
एक अच्छा अर्थ के साथ इस के लिए मूल्य.
और आप ठीक है, मैं हमेशा ", की तरह हो इस मूल्य होना चाहता हूँ
बेशक वस्तु की मैं के साथ काम कर रहा हूँ कि.
या मैं कर रहा हूँ जो देखें मेरे कोड में साथ काम कर रहे हैं
कि यह प्रतिनिधित्व करता है डोम नोड, आप निर्धारित कर सकते हैं -
आप इस के लिए संदर्भ बाध्य कर सकते हैं और फिर इसे बाद में कहा जाता है जब
jQuery और यह एक नहीं है के द्वारा यह छड़ी हूँ इस का अच्छा मूल्य
यह आप के साथ घिरा क्या.
फिर समारोह कॉल वहाँ गया है आप प्रसंग निर्दिष्ट कर सकते हैं
और किसी भी चर निर्दिष्ट तर्कों की संख्या.
और फिर समारोह है आप पास कर सकते हैं जो लागू
संदर्भ में और फिर एक सरणी या तो
या तर्क है कि वस्तुओं आप देख वहाँ के रूप में मैंने उल्लेख किया है.
और किसी में तर्क आप कहते हैं कि समारोह,
आप बस में टाइप कर सकते हैं शब्द "तर्क"
और यह सब होगा तर्क.
यह एक "लंबाई" संपत्ति है
जो मई तर्क थे कि कैसे है वास्तव में है कि तरीकों के लिए पारित
जावास्क्रिप्ट में के बाद से आप कॉल की तरह कर सकते हैं
चर संख्या के साथ तर्कों की.
यह कह के लिए उपयोगी है इस एक विवाद हुआ था, तो
तो इस कोड पथ का अनुसरण करें.
यह दो था, तुम हो सकता है एक और तरह से पालन करना चाहते हैं.
यह आप वास्तव में करने की अनुमति देता अपने तरीकों के लिए गतिशील एपीआई.
आप सोच सकते हैं कि jQuery के साथ
जैसे जब आपके पास डॉलर पर या बाँध डॉट.
और यह की तरह करता है अलग अलग बातें
आप एक डाल के रूप में क्या तर्क या दो या तीन
या एक समारोह के साथ इसे शुरू.
यह तर्क उपयोग कर रहा है संपत्ति
और तर्क मामलों का एक बहुत में लंबाई
इस जादू के लिए है कार्यक्षमता हुआ.
आप के साथ ऐसा नहीं कर सकते बातें तर्क सिर्फ इसका इस्तेमाल किया जाता है
एक सरणी के रूप में डिफ़ॉल्ट रूप से.
तो आप तर्क कह सकते हैं तीन और कुछ के लिए यह सेट
आप का उपयोग कर सकता है सरणी असाइनमेंट.
आप उपयोग कर सकते हैं - एक बहुत जांच के तरीकों की
संग्रह या तो के लिए सरणियों के साथ काम करने के लिए,
आप तर्क में पारित कर सकते हैं और यह पता चलेगा
यह एक तर्क है कि वस्तु और क्रमबद्ध करें
आप के लिए इस बात का ध्यान रखना.
लेकिन आप उपयोग करना चाहते हैं पारित कर रहे हैं कि तर्क
एक सरणी के रूप में एक समारोह के माध्यम से,
आप अंडरस्कोर उपयोग कर सकते हैं दो सरणी डॉट.
संख्या में से एक उपयोगिता कार्यों की
रेखांकित करने में निर्माण कर रहे हैं.