JS सीखने के दौरान, आपका अहा पल क्या था? [बन्द है]


16

क्या आपको याद है कि आप जावास्क्रिप्ट कब सीख रहे थे? वह कौन सा पल था जो आपको अचानक "मिल गया"? (उदाहरण के लिए, मेरा CSS aha-moment तब था जब मैंने बॉक्स मॉडल के बारे में सीखा ...)

Im पूछ रहा है कि मैं 6 सप्ताह के लिए JS सीख रहा हूं, लेकिन मुझे अभी भी यह काफी उलझन भरा लगता है। यहाँ मैं हाल ही में SO पर पढ़ी गई किसी चीज़ का उद्धरण:

"..क्रियाएं मूल्यों के समान कार्य करती हैं, क्योंकि विधि उस वस्तु का गुण है जिसमें किसी फ़ंक्शन का मान होता है (जो एक ऑब्जेक्ट है)।"

यदि आप शुरुआत में भी उलझन में थे तो मैं उत्सुक था और ऐसा क्या था जिसने आपको इसे समझा।

(मैं साइटप्वाइंट्स "सिम्पली जावास्क्रिप्ट", "एलक्क्वेंट जावास्क्रिप्ट" पुस्तक और लिंडैस एसेंशियल एसेंशियल जावास्क्रिप्ट ट्यूटोरियल को पढ़ रहा हूं। मेरे पास कोई प्रोग्रामिंग एक्सपायरी नहीं है और गणित में भयानक था;)

धन्यवाद!


1
मुझे पता है कि भ्रामक और अस्पष्ट होने के लिए उद्धरण ईमानदार है, और मैं कई वर्षों से गुस्से में जावास्क्रिप्ट का उपयोग कर रहा हूं, इसलिए मुझे आश्चर्य नहीं है अगर यह भाषा के लिए किसी नए के लिए भ्रामक है :)
रस कैम

उद्धरण और भ्रम की स्थिति आ रही है क्योंकि वह उद्धरण यह कहना चाह रहा है कि फ़ंक्शंस जावास्क्रिप्ट में प्रथम श्रेणी की वस्तुएं हैं। तेज़ रखें, और आप स्वयं को 'ए-हा' क्षणों के स्रोत के साथ प्रदान करेंगे: संदर्भ के अतिरिक्त फ्रेम।
चिग्गी

जवाबों:


15

मुझे लगता है कि मेरे लिए सबसे बड़ा "अहा" पल था जब मैंने निम्नलिखित को पूरी तरह से समझ लिया था:

कार्यों सहित परिवर्तनीय मूल्य कुछ भी हो सकते हैं

var person = {
    name: 'Sean',
    getName: function() { return this.name; },
    numbers: [7, 11, 41]
}

var myvar = person.name;
alert(myvar); //prints name
alert(myvar()); //"myvar" is not a function error
alert(myvar.length); //undefined

myvar = person.getName;
alert(myvar); //prints the contents of the function as a string
alert(myvar()); //calls the function
alert(myvar.length); //undefined

myvar = person.numbers;
alert(myvar); //prints contents of array
alert(myvar()); //"myvar" is not a function error
alert(myvar.length); //prints 3

10

मेरे लिए यह तब था जब मैंने समझा कि thisकिसी फ़ंक्शन के संदर्भ (किन बिंदुओं) को मनमाने ढंग से बदला जा सकता है

http://www.digital-web.com/articles/scope_in_javascript/


अच्छा एक, निश्चित रूप से लेख पढ़ेंगे।

10

मैं इस बात से सहमत हूं कि कुछ अन्य उत्तरों ने क्या छुआ है; मेरे लिए ए-हा पल वह था जब मुझे समझ में आया कि एक क्लोजर क्या था

मैंने सवाल का जवाब पोस्ट किया है कि एक बंद क्या है? यह समझाने में मदद करने के लिए।

क्लोज़र को समझने के बिना, जावास्क्रिप्ट एक बहुत ही सीमित भाषा है, जिसमें []एरेज़ और JSON ( {}ऑब्जेक्ट्स के लिए), और ब्राउज़र के संदर्भ में DOM ( window/ document) जैसे कुछ अच्छे शॉर्टहैंड सिंटैक्स फीचर्स हैं ।

हालाँकि एक बार जब आप समझ जाते हैं, तो बहुत सी समझ में आ जाता है :

  • वास्तव में एक प्रोटोटाइप क्या है ( यहाँ देखें )
  • प्रोटोटाइप जावास्क्रिप्ट में OOP की कुंजी क्यों है ( यहां देखें )
  • जावास्क्रिप्ट में अधिकांश ईवेंट हैंडलर वास्तव में कैसे काम करते हैं (यह करीबी समझ के बिना जादू की तरह लग सकता है)
  • कॉलबैक के साथ अपने आप को बहुत सारे कोड (और / या समय) कैसे बचाएं

साधन

  • मैं इस पूरी साइट के माध्यम से नहीं गया था, लेकिन यह एक महान संसाधन की तरह लग रहा है, इन विषयों पर छू रहा है: http : //eloquentjavascript.net@content.html
  • जावास्क्रिप्ट पर एक महान ट्यूटोरियल के लिए http://ejohn.org/apps/learn/ देखें

4

मुझे लगता है कि जावास्क्रिप्ट में मेरे लिए सबसे आवश्यक भाषा 'अहा' थी

  • वस्तुओं के रूप में कार्य
  • बंद
  • प्रोटोटाइप-आधारित ऑब्जेक्ट-ओरिएंटेशन
  • जावास्क्रिप्ट में स्कोपिंग

इन सभी विषयों के लिए, आपको वेब पर बहुत सारे संसाधन खोजने चाहिए।

(और सब कुछ नहीं लगता कि पूरी तरह से तार्किक हो जाएगा: जावास्क्रिप्ट है भ्रम)


वास्तव में? जावास्क्रिप्ट है भ्रमित? मेरे लिए यह सब काफी स्वाभाविक लगता है। लेकिन वह सिर्फ मैं :- पी।
Htbaa

3

जावास्क्रिप्ट मेरे लिए कठिन था जब मैंने पहली बार कुछ साल पहले इसे सीखना शुरू किया था क्योंकि मैंने पहली बार चीजों के सर्वर-साइड अंत (php और पर्ल) से वेब विकास सीखना शुरू किया था।

यह सिंटैक्स या OOP या ऐसा कुछ भी नहीं था, जिसने मुझे अलग किया हो, जावास्क्रिप्ट का लाइव और इवेंट-संचालित-नेस - "यह करो और यह करो और इसे पूरा करो और तुम यह कर रहे हो" और यह और यह और फिर हम कुछ होने की प्रतीक्षा करने और उपयोगकर्ता द्वारा पृष्ठ छोड़ने तक प्रतिक्रिया करने की निरंतर स्थिति में हैं "। यह वास्तव में मुझे एक पाश के लिए फेंक दिया।

मुझे नहीं लगता कि मैं विशेष रूप से कुछ भी नाम दे सकता हूं जिसने वास्तव में इसे (कोई निश्चित "अहा!" क्षण में सिंक किया है - अगर मुझे एक विशिष्ट क्षण का नाम देना था, तो मैं कहूंगा कि जब मैं एक खोज सुझाव स्क्रिप्ट के लिए AJAX सीख रहा था; लेकिन आईएमओ कि बस मनमानी है) लेकिन जब मैंने अंततः अंतर को समझ लिया, तो वहां से सब कुछ बहुत आसान हो गया :)


यहाँ पहले से ही कुछ अच्छी दिशाएँ हैं, सभी को धन्यवाद!

1

जब मैंने अंततः इस विचार को टटोल लिया कि मैं भाषा के किसी भी हिस्से को फिर से परिभाषित कर सकता हूं जो भी बकवास मैं चाहता हूं। इस संबंध में, सी से भी अधिक शक्तिशाली है। उदाहरण के लिए, अगर मुझे मानक toString()कार्य पसंद नहीं है , तो मैं अपना खुद का कार्यान्वयन करूंगा:

x.toString = function () {
    return "this is MY toString function biatch!";
}

यह वास्तव में ओवरराइडिंग से कैसे अलग है?
निकोल

1

जब मुझे एहसास हुआ कि आप एक फ़ंक्शन ऑब्जेक्ट पर एक संपत्ति सेट कर सकते हैं।

इसके अलावा जब मैंने आखिरकार समझा कि प्रोटोटाइप क्या था।

function Alpha(){
    return 'aplha';
}
Alpha.Beta = function(){
    return 'beta';
}
Alpha.prototype.Delta = function(){
    return 'delta';
}

Alpha(); // 'alpha'
Alpha.Beta(); // 'beta'
new Alpha().Delta(); // 'delta'

0
function Obj() {
    this.x = 42;
    this.value = function() {
        return this.x;
    };
}

var o = new Obj();
o.value();        // 42
var f = o.value;
f();              // undefined??

और ए-हा पल जब आप अंततः इन परिणामों पर पकड़ लेते हैं।


0

अहा पल # 1, मेरे लिए: एहसास है कि जावास्क्रिप्ट, भाषा, अपने प्राथमिक उपयोग से अलग है: गतिशील HTML और क्लाइंट-साइड वेब प्रोग्रामिंग। मैं जावास्क्रिप्ट के साथ निराश होऊंगा, जब मैं वास्तव में डोम और ब्राउज़र असंगतताओं से निराश था।

अहा पल # 2: यह समझना कि विरासत को कई तरीकों से निष्पादित किया जा सकता है। विशिष्ट वर्ग-आधारित विरासत सिर्फ एक है। प्रोटोटाइप-आधारित (जावास्क्रिप्ट में प्रयुक्त शैली) अन्य भी हैं।

# 1 के संबंध में, मैं जावास्क्रिप्ट की सिफारिश करने का विरोध नहीं कर सकता : अच्छे हिस्से । यह जावास्क्रिप्ट को अपने आप में एक अच्छी भाषा मानता है।


0

कोई ब्लॉक स्कूपिंग और होर्डिंग नहीं।

foo(); // function executes, no error

if (...) {
  function foo(){
    ...
  }
}


-1

jQuery मूल रूप से मेरे लिए 'ए-हा' क्षण था। C # में LINQ / lambda syntax के साथ बहुत अनुभव होने के बाद सिंटैक्स परिचित हुआ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.