2012-03-18 18 views
9

निम्नलिखित प्रदर्शन परीक्षण पढ़ने के दौरान, मैंने देखा कि लेखक $(0) और $(1) का उपयोग करता था। इसका उद्देश्य क्या है?

http://jsperf.com/scriptjunkie-premature-3

var $a = $(0); 

function fn_1() { 
var $a = $(this); 
if ($a.attr("rel") == "foo") { 
    $a.addClass("foo"); 
} 
else { 
    $a.addClass("other"); 
} 
} 

function fn_2() { 
$a.context = $a[0] = this; // fake the collection object 
if ($a.attr("rel") == "foo") { 
    $a.addClass("foo"); 
} 
else { 
    $a.addClass("other"); 
} 
} 
+0

जो भी यह व्यवहार है, यह अनियंत्रित है। '$ (0) => []' और '$ (1) => [1]' (और '$ (2) => [2]'), लेकिन मुझे नहीं पता कि क्यों:/ – Matchu

+2

क्या आपने पढ़ा है इस परीक्षण के लिए आलेख लिंक? –

+0

धन्यवाद @ फ़ेलिक्सक्लिंग, मैंने नहीं देखा कि एक लिंक है! मैं सबसे पहले [यह] पढ़ रहा था (https://docs.google.com/present/view?id=0Ac0YlG9vMA2LZHE1MnpycF8yMGZ6ZnZxa2hy&pli=1) =] – Ton

उत्तर

1

आप jQuery source code को देखें, तो आप देख सकते हैं कि init जब $() निष्पादित किया जाता है कहा जाता है। चयनकर्ता के रूप में पारित जानकारी के विभिन्न टुकड़ों को संभालने के लिए इस फ़ंक्शन में कई if कथन शामिल हैं। समारोह के अंत में निम्नलिखित कहा जाता है:

return jQuery.makeArray(selector, this); 

ऐसे 1 या 2 के रूप में एक नंबर पारित हो जाता है, तो makeArray करने के लिए कॉल बस इसे एक सरणी जैसे [1], [2] को परिवर्तित कर देंगे, आदि तो वहाँ $(1) के बारे में विशेष रूप से विशेष नहीं है।

+0

तो इसका उद्देश्य क्या है ...? क्यों नहीं $ $ = $() 'या' $ a = $ (true) 'या' $ a = [1] '? –

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