2012-05-19 19 views
35

CSiginIn, CSignUp, CTryIt, CBlocks के लिए 'उपसर्ग' सभी कार्य इस तरह केJSHint उम्मीद नए कार्यों

function CSignIn(){//stuff here} 

के रूप में घोषित कर रहे हैं अभी तक JSHint का कहना है कि मैं 'नए' 'उपसर्ग' याद आ रही है। मुझे इसे ठीक करने के लिए क्या करना चाहिए?

वे मॉड्यूल पैटर्न के अंदर बस कार्य कर रहे हैं। साथ ही, यह मुझे उस कार्य के अंत में रखा गया अर्धविराम निकालने के लिए कह रहा है जो मैंने किया है।

var Control = (function() 
{ 

    /** 
    *Publik 
    */ 

    var publik = function (page) 
    { 
     // page 1 initialization 

     if(page == 1) 
     { 
      CSignIn(); 
      CSignUp(); 
      CTryIt(); 
      CBlocks(); 
     } 

समारोह उदाहरण ...

function CTryIt() 
{ 
    // pull elements 

    var tryit_button = document.getElementById('tryit_button'); 

    // initialize access to Model 

    tryit_button.addEventListener("click", function() 
    { 
     new AjaxRequest().invoke('ajax_type=ControlTryIt', 
     function(server_response_text) 
     { 
      new AjaxResponse(server_response_text, 'page_change'); 
     }); 

    }, false); 
} 

उत्तर

67

तो newcap सक्षम किया गया है, JSHint बड़े अक्षर से शुरू होने वाले कार्यों कंस्ट्रक्टर्स होने के लिए और इसलिए new कीवर्ड के साथ कहा जा करने की उम्मीद है।

समाधान: या तो इस विकल्प को अक्षम करें या अपने कार्यों का नाम बदलें।

documentation से:

यह विकल्प निर्माता कार्यों के नाम भुनाने की आवश्यकता है। new ऑपरेटर के साथ उपयोग किए जाने वाले उद्देश्यों को कैपिटल करना केवल एक ऐसा सम्मेलन है जो this का उपयोग करते समय गलतियों को पहचानने में सहायता के लिए प्रोग्रामर को अन्य प्रकार के कार्यों से रचनात्मक कार्यों को दृष्टि से अलग करने में मदद करता है।

ऐसा नहीं कर रहा है, यह आपके ब्राउज़र को किसी भी ब्राउज़र या वातावरण में नहीं तोड़ देगा, लेकिन कोड को पढ़कर यह थोड़ा मुश्किल होगा-अगर समारोह को new के साथ या बिना इस्तेमाल किया जाना चाहिए। और यह महत्वपूर्ण है क्योंकि जब new के साथ उपयोग किया जाने वाला फ़ंक्शन इसका उपयोग किया जाता है, तो this किसी नए ऑब्जेक्ट की बजाय वैश्विक ऑब्जेक्ट को इंगित करेगा।

function MyConstructor() { 
    console.log(this); 
} 

new MyConstructor(); // -> [MyConstructor] 
MyConstructor();  // -> [DOMWindow] 
कैसे this काम करता है, Yehuda Katz द्वारा Understanding JavaScript Function Invocation and "this" पढ़ा पर एक अधिक गहराई से समझने के लिए

+1

ओ.के. मैं दूसरों को भ्रमित नहीं करना चाहता हूं इसलिए मैं जानकारी के लिए धन्यवाद .. कैप्स को ढीला कर दूंगा। –

6

फ़ेलिक्स क्लिंग ने आपको पहले ही सही उत्तर दिया है। पूर्णता के लिए, मुझे लगता है कि newcaptrue पर डिफ़ॉल्ट है (दस्तावेज़ीकरण यह नहीं बताता है, लेकिन आप इसे source code में पढ़ सकते हैं)। इसका अर्थ यह है कि JSHint विकल्पों में सेटिंग newcap: true को हटाने से चेतावनी अक्षम नहीं होगी: इसके बजाय, आपको स्पष्ट रूप से newcap: false सेट करना होगा।

संबंधित मुद्दे