2013-02-07 6 views
11

मैं मदद नहीं कर सकता लेकिन नोटिस jQuery के स्रोत कोड में दो प्रतीत होता है बेकार कार्यों देखते हैं (v1.9.1 के लिए, यह लाइन 2702 और लाइन 2706 है) जिसे दोनों अक्सर jQuery के भीतर बुलाया जाता है। क्या कोई कारण है कि वे बस बूलियन true या false के साथ फ़ंक्शन कॉल को प्रतिस्थापित नहीं करते हैं?returnTrue और returnFalse कार्यों

+0

नीचे दिए गए उत्तर के अलावा, वहाँ शायद भी प्रदर्शन के बजाय अनाम प्रक्रियाएं सब कुछ खत्म हो एक भी परिभाषा के लिए कारण हैं। –

उत्तर

4

इसे इस तरह इस्तेमाल किया गया था:

stopImmediatePropagation: function() { 
    this.isImmediatePropagationStopped = returnTrue; 
    this.stopPropagation(); 
} 
यहाँ

isImmediatePropagationStopped एक प्रश्न विधि है। इस event.isImmediatePropagationStopped()

निश्चित रूप से

की तरह इस्तेमाल किया है, तो आप की तरह, एक उदाहरण विधि को परिभाषित कर सकते हैं:

event.prototyoe.isImmediatePropagationStopped = function() { return this._isImmediatePropagationStopped }; 

stopImmediatePropagation: function() { 
    this._isImmediatePropagationStopped = true; //or false at other place. 
    this.stopPropagation(); 
} 

लेकिन आप स्थिति को स्टोर करने के लिए एक नया उदाहरण संपत्ति _isImmediatePropagationStopped पेश करने की है।

इस चाल के साथ, आप दूर उदाहरण गुणों का गुच्छा पकड़ के लिए सही/गलत स्थिति यहां _isDefaultPrevented आदि

कटौती कर सकते हैं, _isImmediatePropagationStopped की तरह है, ताकि, मेरी राय में, इस कोड शैली का मामला है, सही या गलत नहीं है।

पीएस: घटना पर क्वेरी विधियां, जैसे isDefaultPrevented, isPropagationStopped, isImmediatePropagationStopped डीओएम ईवेंट स्तर 3 सीपीसी में परिभाषित हैं।

कल्पना: http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/events.html#Events-Event-isImmediatePropagationStopped

+0

फिर बदले में 'isImedimediPropagationStopped' परिवर्तन का उपयोग क्यों नहीं करें? तो हम इसे 'if (event.isImmediatePropagationStopped())' के बजाय 'if (event.isImedimediatePropagationStopped) 'जैसे उपयोग कर सकते हैं? – rexcfnghk

+0

यह डब्ल्यू 3 सी स्पेक का भी हिस्सा है (पता नहीं क्यों आपने टिप्पणी हटा दी है): http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/events.html# घटनाक्रम-घटना -IImediatePropagationStopped –

+0

क्योंकि एपीआई w3c द्वारा परिभाषित किया गया है: ** http: //www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/events।एचटीएमएल # घटनाक्रम-घटना-isDefaultPrevented ** –

11

यदि कोई ऑब्जेक्ट प्रॉपर्टी, फ़ंक्शन तर्क, आदि function की अपेक्षा करता है तो आपको functionboolean नहीं प्रदान करना चाहिए।

वेनिला जावास्क्रिप्ट में उदाहरण के लिए:

var a = document.createElement("a"); 
a.href = "http://www.google.com/"; 
/* 
* see https://developer.mozilla.org/en-US/docs/DOM/element.onclick 
* element.onclick = functionRef; 
* where functionRef is a function - often a name of a function declared 
* elsewhere or a function expression. 
*/ 
a.onclick = true;      // wrong 
a.onclick = returnTrue;     // correct 
a.onclick = function() { return true; }; // correct 
इसके अलावा

, लेखन:

someProperty: function(){ 
    return true; 
}, 

विशेष रूप से, क्योंकि वे अक्सर कहा जाता है:

someProperty: returnTrue, 

लेखन से अधिक सुविधाजनक है ।

+0

क्या आप समझा सकते हैं कि आप केवल 'कुछ प्रॉपर्टी: सत्य' का उपयोग क्यों नहीं कर सकते? – rexcfnghk

+4

'true' एक फ़ंक्शन से अलग है जो सत्य देता है। अगर कुछ संपत्ति या तर्क के लिए एक फ़ंक्शन की आवश्यकता होती है तो आप इसे शाब्दिक 'सत्य' के साथ प्रतिस्थापित नहीं कर सकते हैं। –

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